我需要清理我正在开发的Web应用程序的用户输入(或输出)。用户输入只是纯文本,我想防止HTML或其他“有害”字符串。但是,应该允许 等字符,例如小于,大于,撇号,&符号,引号等。
我想第一步是禁用请求验证以防止通用“检测到潜在危险值”消息,但我还需要做什么?我不能简单地对输出进行htmlencode,否则我最终将以& lt显示代替小于字符的位置。例如。
有没有可以提供帮助的工具?我快速浏览了AntiXSS库,但是从我看到它只是一个美化的htmlencoder,或者我错过了什么?那MVC怎么样 - 这有什么内置的吗?
我从未在这类事情上找到一篇不错的文章。有人说清理输入,而其他人则说要清理输出,而且例子通常过于简单化,使用像htmlencoding这样的技术,它会重新格式化完全有效的字符,例如小于。
答案 0 :(得分:2)
Anti-XSS library目前是ASP.Net WebForms中的标准库。虽然它是次优的。并且最新版本(4.2)已several breaking bugs暂时无法修复。
另请参阅MSDN文章Information Security - Anti-Cross Site Scripting。
有关MVC的答案,请参阅Should I use the Anti-XSS Security Runtime Engine in ASP.NET MVC?。从那个答案:
Phil Haack在这里有一篇有趣的博客文章 http://haacked.com/archive/2009/02/07/take-charge-of-your-security.aspx。 他建议使用Anti-XSS结合CAT.NET。