5

我试图在我的 ASP.NET MVC 应用程序中找到防止跨站点脚本的最佳方法。我计划使用 Microsoft 的 AntiXSS 库并从本质上保护两个级别:1)保护常规文本框(即那些应该只包含纯文本的文本框和 2)保护可以生成 HTML 的富文本框。库本身非常简单,但我很难决定在哪里放置验证。我正在使用强类型 HTML 帮助程序并直接绑定我的模型/视图模型,并希望避免在每个操作方法中单独应用 AntiXSS。此外,绝对不想在我的发布操作上关闭 validateinput,如果我在我的模型/视图模型的属性之一中传递 HTML,这是一个要求。

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

提前致谢

4

1 回答 1

2

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

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

于 2010-01-13T18:33:53.333 回答