0

我正在AntiXssEncoder为使用 mvc3 和 .net4 的 Web 项目制作和设置,我已经完成了以下步骤:

  • 添加AxtiXSSLibrary参考
  • 创建AntiXSSEncoder派生自HttpEncoder
  • 覆盖HtmlEncode方法:output.Write(Encoder.HtmlEncode(value));
  • 设置为encoderType_web.config<httpRuntime encoderType="AntiXSSEncoder, MyDll"/>

XssTest<script>alert("test");</script>但是我仍然可以通过 xss 输入 ( )看到警报弹出窗口。

所以我测试并发现默认编码器不编码分配给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/>

谁能给我一个答案或线索?

4

0 回答 0