2010-04-23 65 views
10

我将如何去除脚本标签,以及它们内部使用PHP的内容?Strip <script>标签和PHP之间的所有内容?

+3

我希望你没有试图用黑名单清理用户输入。你会错过'onclick','onmouseover','href =“javascript:','src =”javascript:'等等。 – Quentin 2010-04-23 11:24:18

+0

你应该真的出席大卫提示,但回答你的问题,请看我的帖子。 – oezi 2010-04-23 11:26:54

+0

请问清楚你的需要 – Karthik 2010-04-23 11:27:33

回答

11

正如David所说,如果您想要清理传入数据,仅筛选脚本标记是不够的。 HTML Purifier承诺做完整的包:

HTML净化器是一个用PHP 符合标准的HTML 过滤库。它还将确保您的文档符合标准 ,只有通过W3C的全面知识才能实现这些内容.HTML Purifier不仅可以删除所有恶意的 代码(更好的称为XSS),而且还可以确保您的文档符合标准,只能通过 获得全面的知识。规格。

8

按照Pekka的建议与HTML Purifier一起去。

决不正则表达式去那种情况下

下面是一个例子,正则表达式过滤器破碎,适用于浏览器(Firefox的测试)

<script script=">>><script></script><script>//" > 
/**/ 
alert(1); 
</script 
> 
-2

你可以做到这一点的功能用strip_tags

http://www.php.net/strip_tags

<?php 
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>'; 
echo strip_tags($text); 

// Allow <p> and <a> 
echo strip_tags($text, '<p><a>'); 
?> 
+7

不,他不能使用这个功能! “之间的所有内容。 – 2013-11-06 08:53:04

1

我使用这个:

$tag_para_remover_codigo_fonte_url_dentro_buscador = array("head","script","style","object","embed","applet","noscript","noframes","noembed"); 

for ($i=0;$i<count($tag_para_remover_codigo_fonte_url_dentro_buscador);$i++) { 

    $codigo_fonte_url_dentro_buscador = preg_replace("/< *" . $tag_para_remover_codigo_fonte_url_dentro_buscador[$i] . "[^>]*>(.*?)<\/" . $tag_para_remover_codigo_fonte_url_dentro_buscador[$i] . " *>/i"," ",$codigo_fonte_url_dentro_buscador); 

} 

$codigo_fonte_url_dentro_buscador = html_entity_decode(strip_tags($codigo_fonte_url_dentro_buscador)); 
+2

我认为这些变量名称应该更长。 – xorinzor 2017-01-02 11:57:18

相关问题