Asp.net mvc 在ASP.NET MVC中放置AntiXSS调用的位置建议
我试图在ASP.NET MVC应用程序中找到防止跨站点脚本的最佳方法。我计划使用微软的AntiXSS库,并在两个层面上进行保护:1)保护常规文本框(即只包含纯文本的文本框)和2)保护可以生成HTML的富文本框。库本身非常简单,但我很难决定将验证放在何处。我正在使用强类型HTML帮助程序并直接绑定我的模型/视图模型,希望避免在每个操作方法中单独应用AntiXS。另外,如果我在模型/视图模型的一个属性中传递HTML,肯定不想关闭post操作上的validateinput,这是一个要求 是否可以在ASP.NET MVC中插入AntiXSS,以便在呈现视图(解码)和进入操作过滤器(编码)之前应用它Asp.net mvc 在ASP.NET MVC中放置AntiXSS调用的位置建议,asp.net-mvc,xss,antixsslibrary,Asp.net Mvc,Xss,Antixsslibrary,我试图在ASP.NET MVC应用程序中找到防止跨站点脚本的最佳方法。我计划使用微软的AntiXSS库,并在两个层面上进行保护:1)保护常规文本框(即只包含纯文本的文本框)和2)保护可以生成HTML的富文本框。库本身非常简单,但我很难决定将验证放在何处。我正在使用强类型HTML帮助程序并直接绑定我的模型/视图模型,希望避免在每个操作方法中单独应用AntiXS。另外,如果我在模型/视图模型的一个属性中传递HTML,肯定不想关闭post操作上的validateinput,这是一个要求 是否可以在AS
提前感谢您可以覆盖
System.Web.Mvc.Controller
的OnActionExecuting
方法,并使用OnActionExecuting
的ActionDescriptor
参数上的ActionDescriptor
属性来确定当前正在运行的操作。然后(我认为)可以修改ActionExecutingContext
上的ActionParameters
来进行编码
您是否仅计划使用此选项检查顽皮内容(
AntiXss.GetSafeHtml
),还是还计划进行编码(AntiXss.HtmlEncode
)?如果是后者,我会考虑它,因为它将您的输出格式限制为仅HTML格式,这可能现在还可以,但如果此数据用于其他任何地方,则可能会受到限制。更好的解决方案是创建一个actionfilteratAttribute
,它将执行相同的过滤。这样,您就不必使用ActionDescriptor
来区分动作,只需将属性放在需要它的控制器动作上即可。