【问题标题】:User input sanitisation in asp.netasp.net 中的用户输入清理
【发布时间】:2013-04-06 13:42:19
【问题描述】:

我需要为我正在开发的 Web 应用程序清理用户输入(或输出)。用户输入只是纯文本,我想防止 HTML 或其他“有害”字符串。但是,应该允许使用诸如小于、大于、撇号、和号、引号等字符。

我想第一步是禁用请求验证以防止出现通用的“检测到潜在危险值”消息,但我还需要做什么?例如,我不能简单地对输出进行 htmlencode 编码,否则我最终会显示 &lt 来代替小于字符。

有什么工具可以提供帮助吗?我快速浏览了 AntiXSS 库,但据我所知,它只是一个美化的 htmlencoder,还是我遗漏了什么? MVC 呢?它有内置的东西吗?

我从来没有找到一篇关于这种事情的像样的文章。有人说净化输入,而另一些人说净化输出,示例通常过于简单化,使用 htmlencoding 等技术,它将重新格式化完全有效的字符,例如小于号。

【问题讨论】:

  • +1 表示您真正关心消毒。太多的开发者因为懒惰而跳过它。
  • @JonAdams 我自己对此感到内疚,主要是因为我觉得它太难了。过去我使用过过于简单的解决方案,结果发现 Ryan O'Murphy 联系了帮助台,因为他的撇号已被删除或更改为字符串“&apos”!

标签: asp.net asp.net-mvc


【解决方案1】:

Anti-XSS library 目前是 ASP.Net WebForms 中的标准库。虽然它是次优的。最新版本 (4.2) 有一段时间没有修复的several breaking bugs

另请参阅 MSDN 文章 Information Security - Anti-Cross Site Scripting

请参阅 Should I use the Anti-XSS Security Runtime Engine in ASP.NET MVC? 以获取有关 MVC 的答案。从那个答案:

Phil Haack 在这里有一篇有趣的博文 http://haacked.com/archive/2009/02/07/take-charge-of-your-security.aspx。 他建议将 Anti-XSS 与 CAT.NET 结合使用。

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2013-11-13
    相关资源
    最近更新 更多