[英]Alternative of html purifier
我想接受来自用户的 html 输入并将其发布在我的网站上,还想确保它不会因为脏 html 代码而对我的网站模板造成问题。
我过去使用 html 净化器,但 Html 净化器在我的一台服务器上不起作用。 所以我正在寻找最佳选择。 这纯粹是用php编写的。 它可以修复脏的 html 代码,例如
</div> it is dirty code as div is closed without opening.
没有第三方库的简单解决方案:创建一个DOMDocument
并使用您的输入对其调用loadHTML
。 如果您只是解析一小段代码,则用<html>
和<body>
标签包围输入。 您可能也想抑制警告,因为您会因为常见的错误 HTML 将它们吐出来。
然后只需遍历生成的文档树,删除未包含在已知良好列表中的任何元素和属性。 您还应该检查允许的 URL 属性,以确保它们使用已知良好的方案,如http:
,而不是潜在的麻烦方案,如javascript:
。 如果您想加倍努力,您可以检查是否只有允许的元素组合相互嵌套(您允许的元素数量越少,这就越容易)。
最后,使用saveHTML
再次序列化代码段的节点。 因为您是从 DOM 创建新标记,而不是维护原始的(可能格式错误的)标记,所以这是您正在阻止的一整类奇数标记注入技术。
我相信 Tidy 将有助于关闭您的标签,但它不如 HTML Purifier 全面,后者可以删除有效但不需要的标签或属性(即 JavaScript onclick 事件,诸如此类)。
请注意,Tidy 需要在您的服务器上安装 libtidy,因此它不仅仅是直接的 PHP。
我知道 Pádraic Brady 一直致力于为 Zend Framework 开发 HTML Purifier 的替代方案,尽管我认为目前它只是实验性代码
http://framework.zend.com/wiki/pages/viewpage.action?pageId=25002168
还要考虑在https://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/ 上的HTMLawed
从那个页面;
use to filter, secure & sanitize HTML in blog comments or forum posts, generate XML-
compatible feed items from web-page excerpts, convert HTML to XHTML, pretty-print
HTML, scrape web-pages, reduce spam, remove XSS code, etc.
请注意,Tidy/HTML Tiday 不是反 XSS 解决方案。 它是一个清理和修复实用程序,允许您清理 HTML、XHTML 和 XML 标记。
HTMLawed 是一个 55kb 的单个 php 文件,而 HTML Purifer 是一个 3 MB 的文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.