我目前正处于一个带有PHP前端的项目中。我们非常关注安全性,因为我们拥有相当多的用户,并且是黑客的有吸引力的目标。我们的用户可以提交以后可供其他用户看到的HTML格式的内容。这是一个很大的问题,因为我们很容易受到整套XSS攻击的攻击。我们尽可能地过滤,但攻击向量的种类非常多。
所以,我正在寻找基于PHP的HTML清理/过滤解决方案。商业解决方案很好(甚至是优选的)。目前我们正在使用修改后的HTML净化器,但我们对结果不满意。
哪些好的库/工具能够过滤HTML的恶意部分?
很高兴拥有HTML5认知,一旦它“在野外”可用,它将成为安全的噩梦。
更新 我们正在对HTML Purifier进行深入配置。看起来我们之前使用的旧框架根本就没有配置它。现在结果看起来好多了。
答案 0 :(得分:7)
它具有高度可定制性,并且具有庞大的代码库。唯一的问题是将文件上传到您的服务器。
您确定没有安装配置问题吗?如果配置正确,净化器根本不应该通过任何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兼容模式,他们网站上的推荐书,完整版本,精简版本,哈士奇,轻度胖乎乎的,唐氏综合症以及各种政治上正确的编程变体。