如何过滤掉像SO那样的危险HTML?

时间:2012-03-24 16:13:39

标签: php html sanitization html-sanitizing

我想在我的网站上提供HTML编辑器,但不想让自己打开xss或其他允许用户生成HTML的攻击。<​​/ p>

这与Stack Overflow非常相似。如何在这里检查/清理HTML以便样式信息仍然存在,而其他更危险的东西(如javascript,iframe等)被保留下来?

是否有任何库(最好是PHP)已经这样做了?

4 个答案:

答案 0 :(得分:3)

PHP有一个函数strip_tags,可以从字符串中删除HTML和PHP标记,并允许您指定某些允许的标记。但正如@webarto所述,有libraries可以做得更好。

来自PHP Manual

答案 1 :(得分:0)

您可以使用

strip_tags($yourData,"<a><p><div><i>") // more tags you want to keep;

如果您使用SQL也使用

mysql_real_escape_string($data);

这真的是你不需要注射的全部。请记住,当使用mySQL真正的转义时,你需要使用strip slashes来删除它们。

以下是strip tags的文档和mysql escape的文档。

答案 2 :(得分:0)

如果您希望允许某些(X)HTML并仅限制被视为不安全的标签,您可以使用类似KSES的内容。 Wordpress使用这样的解决方案。

http://sourceforge.net/projects/kses/

答案 3 :(得分:-1)

在Whymarrh帖子的附录中,建议让代码工作在您网站的子文件夹中进行,并自动更改任何包含“..”或“http://”或任何mysql命令的代码。