繁体   English   中英

html净化器的替代品

[英]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 创建新标记,而不是维护原始的(可能格式错误的)标记,所以这是您正在阻止的一整类奇数标记注入技术。

你可以试试PHP Tidy ,它是PHP中的 Tidy 库。

我相信 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

http://github.com/padraic/wibble

还要考虑在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM