我试图在ASP.NET MVC应用程序中找到防止跨站点脚本的最佳方法。我计划使用Microsoft的AntiXSS库并基本上保护两个级别:1)保护常规文本框(即那些只应包含纯文本的文本框和2)保护可生成HTML的富文本框。图书馆本身非常简单,但我很难决定在何处进行验证。我使用强类型HTML帮助程序并直接绑定我的模型/视图模型,并希望避免在每个操作方法中单独应用AntiXSS。另外,绝对不想在我的帖子操作上关闭validateinput,如果我在我的模型/ viewmodel的某个属性中传递HTML,这是一个要求。
是否可以在ASP.NET MVC中注入AntiXSS,以便在渲染视图(解码)之前和进入动作过滤器(编码)之前应用它?
提前致谢
答案 0 :(得分:2)
您可以覆盖OnActionExecuting
的{{1}}方法,并使用System.Web.Mvc.Controller
ActionDescriptor
ActionExecutingContext
参数来确定当前正在运行的操作。然后,您可以(我认为)修改OnActionExecuting
上的ActionParameters
进行编码。
您是否只计划使用此功能检查顽皮内容(ActionExecutingContext
),还是计划进行编码(AntiXss.GetSafeHtml
)?如果是后者,我会考虑它,因为它只将输出格式限制为HTML,这可能现在可以,但如果要在其他任何地方使用这些数据可能会有限制。