0

ASP.NET 4.5 和 Visual Studio 2012 中的新增功能显示了内置的 AntiXSS 库,

    <httpRuntime ...
      encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

@Html.TextBoxFor(x => x.Name, new { @class = "testClass", maxlength = "50" })

很强大,你懂的

 "A potentially dangerous Request.Form value was detected from the client (Name=\"<b> test </b>\").""

对于任何潜在的危险检测,

如果我想要这种或保护,但还允许一些 HTML 内容用于所见即所得的 html 编辑器,我该怎么办?(例如论坛帖子)

4

1 回答 1

3

正如@NickBork 在他的评论中提到的那样,这种错误来自 ASP.NET 请求验证,它们与 AntyXSS 库无关。AntiXSS 库不会保护您的应用程序免受危险输入。它可以帮助您,但您必须明确使用它。

要跳过某些属性的请求验证,您可以使用AllowHtmlAttribute

// model
public class MyModel
{
    [AllowHtml]
    public string HtmlContent { get; set; }
}

// controller
public class HomeController : Controller
{

    [HttpGet]
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(MyModel myModel)
    {
        // use myModel.HtmlContent
        return View(myModel);
    }
}
@* view *@
@model MyModel

<form action="@Url.Action("Index")" method="POST">
    @Html.TextBoxFor(m => m.HtmlContent)
    <button type="submit">Submit</button>
</form>


@if (Model != null)
{
    <div>
    @Html.Raw(Model.HtmlContent)
    </div>
}
于 2013-08-12T12:14:43.800 回答