Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何过滤出危险的HTML呢?_Php_Html_Sanitization_Html Sanitizing - Fatal编程技术网

Php 我如何过滤出危险的HTML呢?

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文章附录中的.中,建议

我想在我的网站上提供一个HTML编辑器,但不想让自己暴露在xss或其他允许用户生成HTML的攻击面前

这与堆栈溢出的作用非常相似。这里如何检查/清理HTML,以便样式信息仍然保留,而其他更危险的东西(如javascript、iFrame等)则被排除在外


是否有任何库(最好是在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.Buljan
htmlspecialchars
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);