ASP.NET MVC内置了防止HTML和跨站脚本注入攻击的支持。当有人试图输入HTML内容进行提交的时候,它会抛出一个错误。要启动它的话,程序员需要显式地指明这是被允许的(但愿他们已经在自己的应用程序中安全地支持它)。
ASP.NET MVC3现在支持一个新属性,你能将它应用到模型/视图模型的属性上,表明HTML输入是开启的。这让我们能遵循DRY(Don’t Repeat Yourself,特指在程序设计中避免重复代码)的方式获得更精确的保护。在上个月的RC版本中,这个属性被命名为 [SkipRequestValidation]。为了让它更直观,在RC2中,我们重命名为[AllowHtml]:
在模型/视图模型中设置上面的[AllowHtml]属性会使ASP.NET MVC3在模型只在绑定到那个属性时关闭HTML注入防护。
Html.Raw()辅助方法
ASP.Net MVC3中引入的新Razor视图引擎,自动默认HTML 编码输出。 这为我们防止HTML和脚本注入攻击提供了新一层的防护。
我们在RC2中加入了Htmal.Raw()辅助方法,让你能显式指明你不想HTML编码输出,而是希望将内容呈现为“当作-是(as-is)”