Php 我如何过滤出危险的HTML呢?
我想在我的网站上提供一个HTML编辑器,但不想让自己暴露在xss或其他允许用户生成HTML的攻击面前 这与堆栈溢出的作用非常相似。这里如何检查/清理HTML,以便样式信息仍然保留,而其他更危险的东西(如javascript、iFrame等)则被排除在外Php 我如何过滤出危险的HTML呢?,php,html,sanitization,html-sanitizing,Php,Html,Sanitization,Html Sanitizing,我想在我的网站上提供一个HTML编辑器,但不想让自己暴露在xss或其他允许用户生成HTML的攻击面前 这与堆栈溢出的作用非常相似。这里如何检查/清理HTML,以便样式信息仍然保留,而其他更危险的东西(如javascript、iFrame等)则被排除在外 是否有任何库(最好是在PHP中)已经这样做了?PHP有一个函数strip\u tags,它可以从字符串中剥离HTML和PHP标记,并允许您指定某些允许的标记。但正如@webarto所述,有一些方法做得更好 从Whymarrh文章附录中的.中,建议
是否有任何库(最好是在PHP中)已经这样做了?PHP有一个函数
strip\u tags
,它可以从字符串中剥离HTML和PHP标记,并允许您指定某些允许的标记。但正如@webarto
所述,有一些方法做得更好
从Whymarrh文章附录中的.中,建议将代码工作放在站点的子文件夹中,并自动更改包含“.”或“http://”或任何mysql命令的任何代码。您可以使用 这就是你不需要注射的全部。请记住,在使用mySQL real escape时,您需要在回显它们时使用它来删除它们 以下是的文档和的文档。如果您希望允许某些(X)HTML并仅限制被视为不安全的标记,您可以使用类似KSE的东西。Wordpress使用这样的解决方案
最好在meta.stackoverflow.com上提问,最简单的方法是使用已知的安全和允许的HTML标记列表,而不是试图过滤掉不好的东西。@j08691,andreas:仅仅因为问题使用SO作为示例并不会自动将其变成元问题。HTMLPurifier会做到这一点@Simeon Visser是的,但这仍然留下了如何实际检查html的问题。好的,谢谢。这并不是那么具体,我只是选择它作为我试图实现的最熟悉的例子。这不是解决方案@webarto如何编写,例如
和@RokoC.Buljanhtmlspecialchars
或htmlentities
。@Roko C.Buljan:由于输入已经是HTML格式,用户(或页面上的HTML编辑器)在内容中键入时必须注意以下事项“strip\u tags
本身不能正确回答问题,因为它不能修改标记属性。如果只使用此方法,仍然可以滥用标记属性。确保您最终使用的任何解决方案都具有属性,例如onmouseover、href、onclick。。。最好的消毒是没有消毒,如果它适合你的需要考虑使用一个简单的替代品,如降价与安全模式。这应该张贴作为一个评论,而不是一个单独的答案。
strip_tags($yourData,"<a><p><div><i>") // more tags you want to keep;
mysql_real_escape_string($data);