这个问题在这里已有答案:
How to prevent XSS with HTML/PHP? 9个答案
Sanitizing HTML input 4个答案
我想在我的网站上提供一个HTML编辑器,但是不想让自己打开xss或其他允许用户生成HTML的攻击 .
这与Stack Overflow的功能非常相似 . 如何在这里检查/清理HTML以便样式信息仍然存在,而其他更危险的东西(如javascript,iframes等)被保留了?
是否有任何库(最好是PHP)已经这样做了?
PHP有一个函数 strip_tags ,它从字符串中删除HTML和PHP标记,并允许您指定某些允许的标记 . 但正如 @webarto 所述,有libraries做得更好 .
strip_tags
@webarto
来自PHP Manual .
你可以用
strip_tags($yourData,"<a><p><div><i>") // more tags you want to keep;
如果您使用SQL也使用
mysql_real_escape_string($data);
这真的是你不需要注射的全部 . 请记住,当使用mySQL真正的转义时,你需要使用_2595900来删除它们 .
以下是strip tags的文档和mysql escape的文档 .
如果您希望允许某些(X)HTML并仅限制被视为不安全的标签,您可以使用类似KSES的内容 . Wordpress使用这样的解决方案 .
http://sourceforge.net/projects/kses/
在Whymarrh帖子的附录中,建议将代码工作发生在站点的子文件夹中,并自动更改具有“..”或“http://”或任何mysql命令的任何代码 .
4 回答
PHP有一个函数
strip_tags
,它从字符串中删除HTML和PHP标记,并允许您指定某些允许的标记 . 但正如@webarto
所述,有libraries做得更好 .来自PHP Manual .
你可以用
如果您使用SQL也使用
这真的是你不需要注射的全部 . 请记住,当使用mySQL真正的转义时,你需要使用_2595900来删除它们 .
以下是strip tags的文档和mysql escape的文档 .
如果您希望允许某些(X)HTML并仅限制被视为不安全的标签,您可以使用类似KSES的内容 . Wordpress使用这样的解决方案 .
http://sourceforge.net/projects/kses/
在Whymarrh帖子的附录中,建议将代码工作发生在站点的子文件夹中,并自动更改具有“..”或“http://”或任何mysql命令的任何代码 .