2010-01-13 25 views
4

我正试图在ASP.NET MVC应用程序中找到防止跨站点脚本的最佳方法。我计划使用微软的AntiXSS库,主要从两个层面进行监控:1)保护常规文本框(即仅包含纯文本和2)的文本框。保护可生成HTML的富文本框。库本身非常简单,但我很难决定将验证放在哪里。我使用强类型HTML助手并直接绑定我的模型/视图模型,并且希望避免在每个操作方法中单独应用AntiXSS。另外,如果我在我的模型/视图模型的其中一个属性中传递HTML,肯定不希望关闭我的发布操作中的validateinput。关于在ASP.NET MVC中放置AntiXSS调用的建议

AntiXSS是否可以在ASP.NET MVC中注入,以便在渲染视图(解码)之前和进入动作过滤器(编码)之前应用?

在此先感谢

回答

2

您可以覆盖的System.Web.Mvc.ControllerOnActionExecuting方法和使用ActionDescriptor属性格式上的OnActionExecutingActionExecutingContext参数来确定什么样的行动正在运行。那么你可以(我认为)修改上的ActionParameters做编码。

你只是计划使用它来检查顽皮的内容(AntiXss.GetSafeHtml),或者你还计划编码(AntiXss.HtmlEncode)?如果是后者,我会考虑它,因为它将输出格式限制为仅用于HTML,现在可能还可以,但如果要在其他地方使用此数据,可能会受到限制。

+1

更好的解决方案是创建一个'ActionFilterAttribute'来完成相同的过滤。那么你不必使用'ActionDescriptor'区分动作,但可以将属性放在需要它的控制器动作上。 – jeffesp 2010-01-14 13:36:41

相关问题