我基本上正在寻找一个库,以将标签,这些标签上的属性过滤为白名单,并针对“困难”的属性(例如a:href和img:src)执行正确的操作。
我看过Jeff Atwood在http://refactormycode.com/codes/333-sanitize-html上发布的帖子,但我不知道它有多新。 它是否与网站当前使用的内容有任何关系? 无论如何,我不确定我是否愿意尝试通过正则表达式来验证有效输入的策略。
此博客文章阐述了一个更加令人信服的策略: http://blog.bvsoftware.com/post/2009/01/08/How-to-filter-Html-Input-to-Prevent-Cross-Site-Scripting-but-Still-Allow-Design.aspx 这种方法是将HTML解析为DOM,验证其有效性,然后从中重建有效的HTML。 如果HTML解析可以合理地处理格式不正确的HTML,则很好。 如果不能,那没关系 - 我可以要求使用tinyMCE编辑器的用户使用格式正确的HTML。 在任何情况下,我都在重新编写安全的、格式正确的HTML。
问题是这只是一个描述,没有链接到实际执行该算法的任何库。
是否存在这样的库? 如果没有,什么是一个好的.NET HTML解析引擎? 应该使用哪些正则表达式来执行额外的验证a:href,img:src? 我还缺少其他重要的东西吗?
我不想在这里重新实现有漏洞的轮子。 肯定有一些常用的库。 有什么想法吗?