我试图在我的 ASP.NET MVC 应用程序中找到防止跨站点脚本的最佳方法。我计划使用 Microsoft 的 AntiXSS 库,主要从两个层面进行保护:1)保护常规文本框(即那些应该只包含纯文本的文本框和 2)保护可以生成 HTML 的富文本框。库本身非常简单,但我很难决定在哪里放置验证。我正在使用强类型 HTML 帮助程序并直接绑定(bind)我的模型/ View 模型,并希望避免在每个操作方法中单独应用 AntiXSS。此外,绝对不想在我的发布操作上关闭 validateinput,如果我在我的模型/ View 模型的属性之一中传递 HTML,这是一个要求。
是否可以在 ASP.NET MVC 中注入(inject) AntiXSS,以便在呈现 View (解码)和进入操作过滤器(编码)之前应用它?
提前致谢
最佳答案
您可以覆盖 OnActionExecuting
System.Web.Mvc.Controller
的方法并使用 ActionDescriptor
ActionExecutingContext
上的属性(property)OnActionExecuting
的论点以确定当前正在运行的操作。然后你可以(我认为)修改 ActionParameters
在 ActionExecutingContext
做编码。
您是否只打算使用它来检查顽皮的内容( AntiXss.GetSafeHtml
),还是还计划进行编码( AntiXss.HtmlEncode
)?如果是后者,我会考虑它,因为它将您的输出格式限制为仅 HTML,这现在可能还可以,但如果要在其他任何地方使用此数据可能会受到限制。
关于asp.net-mvc - 关于在 ASP.NET MVC 中放置 AntiXSS 调用的位置的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058370/