Библиотека AntiXss не работает - PullRequest
3 голосов
/ 31 марта 2011

Я использую 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"/>-->

1 Ответ

7 голосов
/ 01 апреля 2011

Вы правы в этом, поскольку 4.0 .NET кодирует апострофы в HTMLEncode, а AntiXSS - нет, потому что, строго говоря, это не нужно для строк HTML, только для строк атрибутов.

Теперь, когда выПоменяйте AntiXSS как кодировщик, который больше не применяется, и люди все равно применяют Html-кодирование повсеместно.

Так что, когда я запускаю следующую версию AntiXSS, она все время кодирует апострофы.

...