asp.net-mvc - 关于在 ASP.NET MVC 中放置 AntiXSS 调用的位置的建议

标签 asp.net-mvc xss antixsslibrary

我试图在我的 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 的论点以确定当前正在运行的操作。然后你可以(我认为)修改 ActionParametersActionExecutingContext做编码。

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

关于asp.net-mvc - 关于在 ASP.NET MVC 中放置 AntiXSS 调用的位置的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058370/

相关文章:

c# - 如何使用 C# 清理 html 页面上的输入?

c# - 如何通过 Web API 使用 AntiXss

html - XSS 攻击,多次 html 清理

asp.net - DbContext.Add() 和 DbContext.DbSet<TEntity>.Add(TEntity) 之间有什么区别?你什么时候使用其中一种?

asp.net - 如何在 ASP.Net MVC2 中完成这种类型的 URL?

asp.net-mvc - 当 ASP.NET 5 (vNext) 无法重定向绑定(bind)时我该怎么办?

javascript - XSS 攻击在 textarea 标签中不起作用

html - HTML 链接究竟是如何解释的?制表符是否特殊?

asp.net - Data URI 被 AntiXssEncoder 双重编码

c# - 处理多项操作的最佳方式是什么?