我创建了一个模型绑定器,用于使用AntiXssEncoder.HtmlEncode
从恶意输入中清除字符串属性,以便我们能够保存编码的字符串而无需担心XSS。所以我已经完成了这项工作,但是,我遇到的唯一问题是如何使用AntiXss解码字符串属性来编码该值。
该页面呈现此文本,如下所示:
我希望页面将文本呈现为<test> me
而不是上面的图像。我试图寻找一些资源来做到这一点,并通过向视图中的字符串添加扩展方法来实现这一点。但这很乏味,我想设置一些全局,在页面上渲染它们之前自动清理模型中的字符串属性。
有人可以建议一种全局实现自动字符串清理的方法,或者覆盖视图模型并检查字符串属性并在呈现页面之前清理它们吗?
更新
或者我可以覆盖ActionResult
public ActionResult Test()
{
return View(model);
}
答案 0 :(得分:2)
您的代码未解码它的事实将取决于您如何实现模型绑定器。
要进行解码,通常只需使用HttpUtility.Decode
,因此您可能需要在某处运行。
可能需要将[AllowHtml]
属性放在模型属性上。
或者,您可能需要以某种方式实现IHtmlString
以使用ToHtmlString()
方法,该方法允许您将html直接放到页面上,而无需MVC自动清理它。
可能会有更多的代码可以让它更清晰,但其中一个应该指向正确的方向。