覆盖View模型以清理字符串

时间:2017-03-09 16:58:26

标签: c# asp.net asp.net-mvc antixsslibrary

我创建了一个模型绑定器,用于使用AntiXssEncoder.HtmlEncode从恶意输入中清除字符串属性,以便我们能够保存编码的字符串而无需担心XSS。所以我已经完成了这项工作,但是,我遇到的唯一问题是如何使用AntiXss解码字符串属性来编码该值。

该页面呈现此文本,如下所示:

enter image description here

我希望页面将文本呈现为<test> me而不是上面的图像。我试图寻找一些资源来做到这一点,并通过向视图中的字符串添加扩展方法来实现这一点。但这很乏味,我想设置一些全局,在页面上渲染它们之前自动清理模型中的字符串属性。

有人可以建议一种全局实现自动字符串清理的方法,或者覆盖视图模型并检查字符串属性并在呈现页面之前清理它们吗?

更新 或者我可以覆盖ActionResult

的这一部分的方式
public ActionResult Test()
{
   return View(model);
}

1 个答案:

答案 0 :(得分:2)

您的代码未解码它的事实将取决于您如何实现模型绑定器。

要进行解码,通常只需使用HttpUtility.Decode,因此您可能需要在某处运行。

可能需要将[AllowHtml]属性放在模型属性上。

或者,您可能需要以某种方式实现IHtmlString以使用ToHtmlString()方法,该方法允许您将html直接放到页面上,而无需MVC自动清理它。

可能会有更多的代码可以让它更清晰,但其中一个应该指向正确的方向。