2012-02-07 58 views
0

全部,我应该允许用户生成内容的HTML标记的白名单?

我正在使用PHP构建一个小型站点。在该网站中,我收到用户生成的文字内容。我想要允许一些安全的HTML标记(例如格式)以及MathML。我如何着手编译strip_tags()函数的白名单?有一个我可以使用的很好的白名单吗?

回答

4

标准strip_tags函数不足以满足安全性,因为它根本不验证属性。明确使用更完整的库来完全清除HTML,如HTML Purifier

+0

另一个好的资源是[OWASP XSS预防备忘录](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet) – pepsi 2012-02-07 23:30:54

1

如果您的目标是不允许JavaScript通过,那么您的标记白名单将非常接近空集。 请记住,几乎所有标签都可以有event attributes包含要在指定事件发生时执行的JavaScript代码。

如果您不想沿着HTMLPurifier类型的路线走,请考虑使用其他语言,如markdown(本网站使用的语言)或其他类似wiki的标记语言;但是,一定要禁用任何可能允许使用的直通HTML。

+0

降价是否允许MathML或LaTeX? – JDelage 2012-02-08 13:28:30

相关问题