当前位置:首页 > PHP教程 > php应用 > 列表

PHP防注入内容过滤方法

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-21 15:30:40 浏览: 评论:0 

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

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

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

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

例2,过滤一些html标签,代码如下:

  1. function uh($str)  
  2. {  
  3. $farr = array(  
  4. "/s+/"//过滤多余的空白  
  5. "/<(/?)(scripti?framestylehtmlbodytitlelinkmeta?%)([^>]*?)>/isU"//过滤 <script 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<object的过滤  
  6. "/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU"//过滤javascript的on事件  
  7. );  
  8. $tarr = array(  
  9. " "//开源代码phpfensi.com 
  10. "<\1\2\3>"//如果要直接清除不安全的标签,这里可以留空  
  11. "\1\2",  
  12. );  
  13. $str = preg_replace( $farr,$tarr,$str);  
  14. return $str;  

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

  1. <?php  
  2. if($_POST)  
  3. {  
  4.  //获取文件内容转为数组两种方法:  
  5.  /*  
  6.  $fcon = file_get_contents("./filter.txt");  
  7.  $filter_word = explode("n",$fcon);  
  8.  */  
  9.  $filter_word = file("./filter.txt");  
  10.  //$filter_word = array("test1","test2","test3","test4");  
  11.  $str = $_POST["mess"];  
  12.  for($i=0;$i<count($filter_word);$i++)  
  13.  {  
  14.   if(preg_match("/".(trim($filter_word[$i]))."/i",$str))  
  15.   {  
  16.    echo "<script>alert('您输入的内容含非法内容,请重输!');</script>";  
  17.    echo "<a href='index.php'>返回</a>";  
  18.    exit;  
  19.   }  
  20.  }  
  21.  echo "您输入的内容是:".$str;  
  22. }  
  23. ?>  
  24. <h2>测试过滤是否生效:</h2>  
  25. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">  
  26. <p><textarea name="mess" cols="40" rows="4"></textarea></p>  
  27. <p><input type="submit" name="sub" value="send"></p>  
  28. </form> 

Tags: PHP防注入 PHP内容过滤

分享到: