我正在寻找执行严格(白名单)验证/筛选用户提交的HTML的最佳做法。严格的HTML验证和PHP筛选
主要目的是过滤可能通过网页表单输入的XSS和类似的垃圾。次要目的是限制由非技术用户输入的HTML内容的破坏,例如通过具有HTML视图的所见即所得编辑器。我正在考虑使用HTML Purifier,或者通过使用HTML DOM解析器来滚动我自己的过程,如HTML(dirty) - > DOM(dirty) - > filter-> DOM(clean) - > HTML(清洁)。
你能用这些或更简单的策略来描述成功吗?任何需要注意的缺陷?
感谢罗斯,这些都是应该被滤除的各种输入的优秀例子。但我正在寻找的答案将包括方法和解决方案。 – 2008-10-14 14:52:02
第一个示例(它是对编码错误文章的引用:http://www.codinghorror.com/blog/archives/001171.html)并不真正相关,因为'漏洞'取决于该URL的性质,而是比这个特定的HTML代码片段的语法要复杂得多。 – 2008-10-14 15:26:38
还有一些有用的规则可应用于第一个规则,例如“仅当src属性与正则表达式/^http:\/\/localsite.com\/uploaded_images\/[\w-]匹配时才允许标记” * \(PNG | JPG | GIF)。$ /我”。 – 2008-10-14 16:21:15