论坛开放HTML,使用下面的过滤机制安全吗?

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:45:58
<?php
$str=preg_replace("/\s+/", " ", $str); //过滤多余回车
$str=preg_replace("/<[ ]+/si","<",$str); //过滤<__("<"号后面带空格)

$str=preg_replace("/<\!--.*?-->/si","",$str); //注释
$str=preg_replace("/<(\!.*?)>/si","",$str); //过滤DOCTYPE
$str=preg_replace("/<(\/?html.*?)>/si","",$str); //过滤html标签
$str=preg_replace("/<(\/?head.*?)>/si","",$str); //过滤head标签
$str=preg_replace("/<(\/?meta.*?)>/si","",$str); //过滤meta标签
$str=preg_replace("/<(\/?body.*?)>/si","",$str); //过滤body标签
$str=preg_replace("/<(\/?link.*?)>/si","",$str); //过滤link标签
$str=preg_replace("/<(\/?form.*?)>/si","",$str); //过滤form标签
$str=preg_replace("/cookie/si&quo

不安全

不安全也不科学不精确不有效!

目前见到的最好的解决办法是使用专用的Tidy模块对用户输入的内容进行自动XHTML纠错,并且生成解析树对逐个节点进行危险代码过滤。

这里有一篇很好的解决方案,使用PHP+Tidy的。
《PHP+Tidy-完美的XHTML纠错+过滤》
http://nukq.malmam.com/2006/09/25/phptidy%ef%bc%8d%e5%ae%8c%e7%be%8e%e7%9a%84html%e7%ba%a0%e9%94%99%e8%bf%87%e6%bb%a4/