Я использую AntiXssLibrary 4.0, но это не экранирование \ x3c. В чем моя ошибка?
Я настроил AntiXss по умолчанию HttpEncoder
на основе здесь http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx и установил encoderType
из httpRuntime
в web.config
.
Я также создаю AntiXSSEncoder
, полученный из HttpEncoder
, но вместо устаревшего
output.Write(AntiXss.HtmlEncode(value));
Я использую это для переопределения HtmlEncode
метода:
output.Write(Encoder.HtmlEncode(value));
В настоящее время, если я просматриваю это:
http://localhost:28453/?k=sss\x3cscript\x3ealert%28\x27haaha\x27%29;\x3c/script\x3e
Предупреждение "haaha" показывает, что библиотека AntiXss не работает. Я просто хочу сделать так, как это шоу http://channel9.msdn.com/Events/MIX/MIX10/FT05 смотри на минуту 13.
Для подтверждения я также установил это в действии:
public ActionResult Index(string k)
{
ViewBag.k = k;
ViewBag.j = Microsoft.Security.Application.Encoder.HtmlEncode(k);
return View();
}
Тогда в представлении я поставил это:
<script type="text/javascript">
$(document).ready(function () {
var a = '@ViewBag.k';
var b = '@ViewBag.j';
$('.resultName:first').html(b);
});
</script>
В браузере значения a и b совпадают, что свидетельствует о том, что AntiXss не работает должным образом!
<script type="text/javascript">
$(document).ready(function () {
var a = 'sss\x3cscript\x3ealert(\x27haaha\x27);\x3c/script\x3e';
var b = 'sss\x3cscript\x3ealert(\x27haaha\x27);\x3c/script\x3e';
$('.resultName:first').html(b);
});
</script>
Обновление : Это произошло только тогда, когда я использую AntiXssEncoder
в качестве типа датчика. Когда я это комментирую и перестраиваю. одиночная кавычка 'избежала MVC. Кажется, AntiXss отключен! я что-то пропустил? Я хочу, чтобы это работало, потому что я хочу, чтобы \ x3c также сбежал как видео.
<!--<httpRuntime encoderType="AntiXSSEncoder, MVCWeb"/>-->