>  기사  >  백엔드 개발  >  简单PHP防注入内容过滤方法_PHP教程

简单PHP防注入内容过滤方法_PHP教程

WBOY
WBOY원래의
2016-07-13 10:48:021061검색

内容过滤多是为了防止一些安全注入或者是跨域操作了,下面我们一起来看看我整理的几个简单的防注入内容过滤程序代码,希望文章对各位同学会有所帮助。

方法一,过滤一些没用的内容

过滤没用的信息比较严格,有用的可能也输入不进去,可以从网上找找其他的过滤方法:

 代码如下 复制代码

function checkHtml($data){
  $ret  = preg_match("/['.,:;*?~`!@#$%^&+=)({}]|]|[|/|\|"||/",$data);
  if ($ret == 1) {
    return false; exit;
  } else {
    return true;
  }
}

例2 过滤一些html标签了

 代码如下 复制代码


function uh($str)
{
$farr = array(
"/s+/", //过滤多余的空白
"/]*?)>/isU", //过滤 <script></script> "/(]*)on[a-zA-Z]+s*=([^>]*>)/isU", //过滤javascript的on事件
);
$tarr = array(
" ",
"<\1\2\3>", //如果要直接清除不安全的标签,这里可以留空
"\1\2",
);
$str = preg_replace( $farr,$tarr,$str);
return $str;
}

方法三,上面两种方法都是把要过滤内容放在了程序中,下面我把要过滤的内容放到一个txt文本只,第次只要读文件内容进行判断即可,这样方便维护要过滤的内容。

 代码如下 复制代码

if($_POST)
{
 //获取文件内容转为数组两种方法:
 /*
 $fcon = file_get_contents("./filter.txt");
 $filter_word = explode("n",$fcon);
 */
 $filter_word = file("./filter.txt");
 //$filter_word = array("test1","test2","test3","test4");
 $str = $_POST["mess"];
 for($i=0;$i  {
  if(preg_match("/".(trim($filter_word[$i]))."/i",$str))
  {
   echo "<script>alert('您输入的内容含非法内容,请重输!');</script>";
   echo "返回";
   exit;
  }
 }
 echo "您输入的内容是:".$str;
}
?>

测试过滤是否生效:





www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632820.htmlTechArticle内容过滤多是为了防止一些安全注入或者是跨域操作了,下面我们一起来看看我整理的几个简单的防注入内容过滤程序代码,希望文章对各...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.