Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在ASP.NET MVC中放置AntiXSS调用的位置建议_Asp.net Mvc_Xss_Antixsslibrary - Fatal编程技术网

Asp.net mvc 在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

我试图在ASP.NET MVC应用程序中找到防止跨站点脚本的最佳方法。我计划使用微软的AntiXSS库,并在两个层面上进行保护:1)保护常规文本框(即只包含纯文本的文本框)和2)保护可以生成HTML的富文本框。库本身非常简单,但我很难决定将验证放在何处。我正在使用强类型HTML帮助程序并直接绑定我的模型/视图模型,希望避免在每个操作方法中单独应用AntiXS。另外,如果我在模型/视图模型的一个属性中传递HTML,肯定不想关闭post操作上的validateinput,这是一个要求

是否可以在ASP.NET MVC中插入AntiXSS,以便在呈现视图(解码)和进入操作过滤器(编码)之前应用它


提前感谢

您可以覆盖
System.Web.Mvc.Controller
OnActionExecuting
方法,并使用
OnActionExecuting
ActionDescriptor
参数上的
ActionDescriptor
属性来确定当前正在运行的操作。然后(我认为)可以修改
ActionExecutingContext
上的
ActionParameters
来进行编码


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

更好的解决方案是创建一个
actionfilteratAttribute
,它将执行相同的过滤。这样,您就不必使用
ActionDescriptor
来区分动作,只需将属性放在需要它的控制器动作上即可。