Php html净化器的替代方案

Php html净化器的替代方案,php,Php,我想接受来自用户的html输入,并将其发布到我的网站上。我还想确保它不会因为肮脏的html代码而对我的网站模板造成问题 我在过去使用过html净化器,但html净化器在我的一台服务器上不起作用。所以我在寻找最好的选择。 这完全是用php编写的。 它可以修复脏的html代码,如 </div> it is dirty code as div is closed without opening. 这是脏代码,因为div在未打开的情况下关闭。 您可以尝试,这是PHP中的Tidy库。我相信

我想接受来自用户的html输入,并将其发布到我的网站上。我还想确保它不会因为肮脏的html代码而对我的网站模板造成问题

我在过去使用过html净化器,但html净化器在我的一台服务器上不起作用。所以我在寻找最好的选择。 这完全是用php编写的。 它可以修复脏的html代码,如

</div> it is dirty code as div is closed without opening. 
这是脏代码,因为div在未打开的情况下关闭。

您可以尝试,这是PHP中的Tidy库。

我相信Tidy将帮助关闭您的标记,但它不如HTML净化器那样全面,后者可以删除有效但不需要的标记或属性(即JavaScript onclick事件,诸如此类)

请注意,Tidy需要在服务器上安装libtidy,因此它不仅仅是纯PHP

我知道pádraic Brady一直在为Zend Framework开发HTML净化器的替代品,尽管我认为这只是目前的实验代码


没有第三方库的简单解决方案:创建一个应用程序,并使用您的输入在其上调用
loadHTML
。如果您只是在分析一个小片段,那么就用
标记包围输入。您可能也希望抑制警告,因为对于常见的坏HTML,它们会被大量抛出

然后,只需浏览生成的文档树,删除已知良好列表中未包含的任何元素和属性。您还应该检查允许的URL属性,以确保它们使用已知的好方案,如
http:
,而不是潜在的麻烦方案,如
javascript:
。如果您想多走一步,可以检查是否只允许将允许的元素组合嵌套在彼此内部(允许的元素数量越少,这就越容易)


最后,使用再次序列化代码段的节点。因为您正在从DOM创建新的标记,而不是保持原始的潜在畸形标记,这是一个阻塞的奇数标记注入技术。

也考虑HTMLADED在

从那一页

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/htmltiday不是一个反XSS解决方案。它是一个清理和修复工具,允许您清理HTML、XHTML和XML标记


HTMLawed是一个55kb的php文件,而HTMLPurifer是一个3MB的文件夹。

我想应该是这样的。查看安装页面,它说这个模块与PHP>=5捆绑在一起。谢谢。我在找伊萨姆。我建议要么尝试让HTML净化器工作,要么尝试整洁。但我想尝试一下。所以我试过了,告诉你答案。