Кодировщик по умолчанию в HttpRuntime не работает для ViewBag

Я делаю и настраиваю AntiXssEncoder для моего веб-проекта, который использует mvc3 и.net4, и я сделал эти шаги:

  • добавлять AxtiXSSLibrary ссылка
  • Создайте AntiXSSEncoder происходит от HttpEncoder
  • переопределить HtmlEncode метод: output.Write(Encoder.HtmlEncode(value));
  • задавать encoderType в web.config в <httpRuntime encoderType="AntiXSSEncoder, MyDll"/>

Но я все еще вижу всплывающее окно с предупреждением по вводу xss (XssTest<script>alert("test");</script>).

Итак, я проверил и обнаружил, что кодировщик по умолчанию не кодирует значения, которые назначены ViewBag, Мой тестовый код ниже и показывает, что он не закодирован.

//In controller code
[ValidateInput(false)]
public ActionResult AntiXss(string TextArea)
{
    ViewBag.DisplayInput = TextArea;
    ViewBag.DisplayEncodedInput = Encoder.HtmlEncode(TextArea);

    return View();
}
//In view code
@using (Html.BeginForm("AntiXss", "Test"))
{
    @Html.TextArea("TextArea")
    <p/>
    @Html.Raw(ViewBag.DisplayInput)
    <p/>
    @Html.Raw(ViewBag.DisplayEncodedInput)
    //@ViewBag.DisplayInput
    <p/>
    <input type="submit" value="ok"/>
}
//In redered page code
<textarea id="TextArea" name="TextArea">&#13;&#10;XssTest&lt;script&gt;alert(&quot;Test&quot;);&lt;/script&gt;</textarea>    <p/>
XssTest<script>alert("Test");</script>    <p/>
XssTest&lt;script&gt;alert(&quot;Test&quot;);&lt;/script&gt;    <p/>

Кто-нибудь может дать мне ответ или подсказку?

0 ответов

Другие вопросы по тегам