有没有可用的基于PHP的HTML过滤器?

时间:2010-02-23 16:43:40

标签: php html security filtering

我目前正处于一个带有PHP前端的项目中。我们非常关注安全性,因为我们拥有相当多的用户,并且是黑客的有吸引力的目标。我们的用户可以提交以后可供其他用户看到的HTML格式的内容。这是一个很大的问题,因为我们很容易受到整套XSS攻击的攻击。我们尽可能地过滤,但攻击向量的种类非常多。

所以,我正在寻找基于PHP的HTML清理/过滤解决方案。商业解决方案很好(甚至是优选的)。目前我们正在使用修改后的HTML净化器,但我们对结果不满意。

哪些好的库/工具能够过滤HTML的恶意部分?

很高兴拥有HTML5认知,一旦它“在野外”可用,它将成为安全的噩梦。

更新 我们正在对HTML Purifier进行深入配置。看起来我们之前使用的旧框架根本就没有配置它。现在结果看起来好多了。

7 个答案:

答案 0 :(得分:7)

HTML Purifier项目

我个人对HTML Purifier project

的结果非常好

它具有高度可定制性,并且具有庞大的代码库。唯一的问题是将文件上传到您的服务器。

您确定没有安装配置问题吗?如果配置正确,净化器根本不应该通过任何HTML标记。

来自网站:

  

HTML Purifier符合标准   用PHP编写的HTML过滤器库。   HTML Purifier不仅会删除所有内容   恶意代码(俗称为   XSS)经过全面审核,
  它安全但宽容的白名单   还将确保您的文件   符合标准,只有一些东西   可以全面实现   了解W3C的规格。
  厌倦了使用BBCode   当前的景观缺陷或   不安全的HTML过滤器?有一个   WYSIWYG编辑但从未能够   用它?寻找高品质,   符合标准,开源   该应用程序的组件   你在建造? HTML Purifier适用于   你!

我写了一篇关于如何在这里使用HTML purifier library with CodeIgniter的文章。

也许这有助于再试一次:

// load the config and overide defaults as necessary
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML', 'Doctype', 'XHTML 1.0 Transitional');
$config->set('HTML', 'AllowedElements', 'a,em,blockquote,p,strong,pre,code');
$config->set('HTML', 'AllowedAttributes', 'a.href,a.title');
$config->set('HTML', 'TidyLevel', 'light'); 

答案 1 :(得分:2)

CodeIgniter有一个出色的XSS过滤器,如果你想把它作为一个独立的函数,你可以把它从system / libraries / Input.php文件中删除。

答案 2 :(得分:1)

kses效果很好。您可以轻松指定允许和禁止哪些元素,因此将其设置为“HTML5”只需设置数组即可。

WordPress使用它,所以我猜它非常安全;)

答案 3 :(得分:1)

我真的可以推荐kses进行HTML过滤。实际上这就是wordpress使用的。它是免费和开源的。

答案 4 :(得分:1)

您可以使用当前的解决方案并添加具有不同基本网址的iframe来显示内容。更改iframe上的基本URL将禁止从内部JavaScript代码访问主页面。也就是说,如果您的网址为http://www.yoururl.com/thread/500 您可以在iframe中使用它来显示内容,例如:http // yoururl.com / thread / 500 / coment / 1,http // yoururl.com / thread / 500 / coment / 2。

您可以设置的基本URL可能取决于您的DNS /主机配置。

这不是解决问题的解决方案,而是将其跳过,虽然在找到其他内容之前它会很有用。

答案 5 :(得分:1)

我之前使用过这门课,取得了相当不错的成绩: http://www.phpclasses.org/browse/package/2189.html

答案 6 :(得分:0)

HTMLPurifier可能有用 - 但我要说的是文件夹结构过于复杂和浮夸。数百行评论,一个名为“test”的文件夹,一个许可证文件,read-mes和信息文件,图像,用于烟雾测试的另一个文件夹(这是彻头彻尾的滥用),附加内容,配置,基准测试 - 并且最重要的是,大约10种不同的CMS兼容模式,他们网站上的推荐书,完整版本,精简版本,哈士奇,轻度胖乎乎的,唐氏综合症以及各种政治上正确的编程变体。