sql 注入字符的检测函数

自己写的一款sql注入检测函数,可以有效的检测用户post,get过来的参考进行过滤,有需要的朋友参考一下,代码如下:

  1. <?php
  2. /*sql 注入 字符的检测
  3. * 在所有用户输入的数据,post传参, get传参 都需要检测下
  4. * 如果有匹配到关键字 则 返回该关键字 否则返回false
  5. * 这个和敏感字符的检测不是一样的
  6. */
  7. function Filter_SQL($strData)
  8. {
  9. $strFilter=$blnFlag=$arrayFilter='';
  10. $strFilter="'|and|(|)|exec|insert|select|delete|update|count|*|%27|chr|mid|master|truncate|char|declare|union|or"; //需要过滤的字符,可以自己添,"|"是分隔符
  11. $blnFlag=false; //过滤标志,如果产生过滤,那么就是真
  12. $arr=explode("|",$strFilter);
  13. $str="";
  14. foreach($arr as $row)
  15. {
  16. $str.=preg_quote($row)."|";
  17. }
  18. $str=trim($str,"|");
  19. if(preg_match('/'.$str.'/i',$strData,$word))
  20. {//开源代码phpfensi.com
  21. return $word[0];
  22. }
  23. return false;
  24. }
  25. /*
  26. 测试
  27. $string="fasdf union ";
  28. echo Filter_SQL($string);
  29. */
  30. ?>