5

我正在寻找一个简单的 PHP 库来帮助过滤 PHP Markdown 输出中的 XSS 漏洞。IE PHP Markdown 将解析以下内容:

[XSS Vulnerability](javascript:alert('xss'))

我一直在做一些阅读,我在这里找到的关于这个主题的最好的就是这个问题。

尽管 HTML Purifier 看起来是最好的(几乎唯一的)解决方案,但我想知道是否有更通用的解决方案?HTML Purifier 似乎有点健壮,尤其是满足我的需求,而且配置起来很痛苦,尽管这样做后它看起来会很好用。

还有什么其他的东西可能不那么健壮和可配置但仍然做得很好吗?还是我应该深入研究并开始尝试配置 HTML Purifier 以满足我的需求?

编辑澄清:我不想偷工减料或类似的东西。HTML Purifier 只是提供了许多细粒度的控制,对于一个简单的小项目来说,根本不需要太多的控制,尽管也不可以选择不使用任何东西。当我要求更简单不太健壮的东西时,这就是我的出发点。

最后一点,我不是在寻找使用建议或类似的东西。我已经通过以类似方式对其进行清理,从而禁止在 PHP Markdown Extra 中嵌入 HTML。我正在寻找方法来防止 PHP Markdown OUTPUT 中的 XSS 漏洞htmlspecialchars()strip_tags()

谢谢。

4

4 回答 4

7

我从来没有听说过除了HTML Purifier之外的任何其他工具,可以做到这一点——而且 HTML Purifier 确实有很好的声誉。

也许它“有点健壮”和“配置起来很痛苦”,是的;但它也可能是 PHP 中最常用和测试最多的解决方案;;当您必须选择如此重要的组件时,这些都是重要的标准。

即使这意味着要花半天时间来正确配置它,如果我是你的情况,我可能会选择 HTML Purifier。

于 2010-01-19T00:18:54.393 回答
3

没有太强大的东西。“清理” HTML很难。您为更简单地处理它而切入的任何角落都可能导致漏洞利用。即使是具有最佳声誉的复杂的旧 HTMLPurifier,过去也有多种方法可以隐藏危险的标记!

但是,如果您的文本标记解决方案能够输出危险的 HTML,那么它是有缺陷的,应该替换 IMO。如果 PHP Markdown 允许javascript:URL 通过,那么这是一个非常可悲的基本缺陷,我不认为我会相信它会做其他任何事情。

于 2010-01-19T00:21:16.430 回答
1

我有一个建议,我在 SO 上询问它是否可行,但不幸的是,它已关闭并标记为该问题的重复项。

我的建议是修改markdown的代码,只允许链接和图片源以 开头http://https://或者ftp://涵盖所有需要的常用协议。如果链接不是以其中之一开头,那么它应该在输出中保持不变。

于 2013-05-21T12:39:04.977 回答
0

HTMLPurifier 是一个很好的答案,也许是最强大的解决方案。

也可以用相对安全的方式使用 Markdown,但是你必须以正确的方式使用它。有关如何安全使用 Markdown 的详细信息,请查看此处。有关如何安全使用它的详细信息,请参阅链接,但简短的版本是:使用最新版本、设置safe_mode和设置很重要enable_attributes=False

于 2012-05-06T21:47:00.197 回答