Кодировщик по умолчанию в 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"> XssTest<script>alert("Test");</script></textarea> <p/>
XssTest<script>alert("Test");</script> <p/>
XssTest<script>alert("Test");</script> <p/>
Кто-нибудь может дать мне ответ или подсказку?