【问题标题】:ValidateInput(false), but now how to keep my HTML input clean?ValidateInput(false),但现在如何保持我的 HTML 输入干净?
【发布时间】:2011-06-23 10:07:42
【问题描述】:

因此,在 ASP.NET MVC2 应用程序的一部分中,我必须允许来自典型富文本框的 HTML 输入。所以,我在控制器方法上添加了一个属性来关闭 MVC 的暴力输入验证。

但是,现在我该怎么做才能防止 XSS 攻击。到目前为止,我已经查看并发现:

  • AntiXSS:看起来不错,但白名单似乎不可编辑。此外,由于某种原因,我在让它工作时遇到问题。添加对 dll 的引用后,编译器仍会看到缺少的程序集。
  • Antisamy:允许配置白名单,但 .NET 上一次更新是在 2009 年。这并不能激发人们对安全软件的信心。

还有什么?是否有其他库可以清理包含 HTML 的输入,以便轻松配置允许的标签?

【问题讨论】:

  • 是否允许升级到 ASP.NET MVC 3?如果是这样,您可以使用 AllowHtml 属性。
  • 这只是按字段而不是按方法关闭蛮力。但是,假设你让那个文件不加检查,那该怎么办?

标签: c# asp.net-mvc-2 xss


【解决方案1】:

您可以考虑使用 HTML 解析器,沿着解析树消除有害的标签/属性。您将完全控制允许的内容。根据this question HTMLAgilityPack 是C# 的最佳选择。

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 2013-07-20
    • 1970-01-01
    • 2021-01-07
    • 2014-10-27
    • 2014-11-23
    相关资源
    最近更新 更多