如何使用PHP删除脚本标记及其中的所有内容?
答案 0 :(得分:11)
正如David所说,如果您希望清理传入的数据,仅过滤脚本标记是不够的。 HTML Purifier承诺做全套服务:
HTML Purifier符合标准 编写的HTML过滤器库 PHP。 HTML Purifier不仅会删除所有恶意内容 代码(更好地称为XSS)经过全面审核, 安全而宽松的白名单, 它还将确保您的文件 符合标准,只有通过a才能实现 全面了解W3C的规范。
答案 1 :(得分:8)
按照Pekka建议的那样去HTML Purifier。
永远不要使用正则表达式
以下是一个示例,正则表达式过滤器已损坏,适用于浏览器(在Firefox上测试)
<script script=">>><script></script><script>//" >
/**/
alert(1);
</script
>
答案 2 :(得分: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));
答案 3 :(得分:-2)
您可以使用功能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>');
?>