比较好用的PHP防注入漏洞过滤函数代码

复制代码 代码如下:

  <?PHP

  //PHP整站防注入程序,需要在公共文件中require_once本文件

  //判断magic_quotes_gpc状态

  if (@get_magic_quotes_gpc ()) {

  $_GET = sec ( $_GET );

  $_POST = sec ( $_POST );

  $_COOKIE = sec ( $_COOKIE );

  $_FILES = sec ( $_FILES );

  }

  $_SERVER = sec ( $_SERVER );

  function sec(&$array) {

  //如果是数组,遍历数组,递归调用

  if (is_array ( $array )) {

  foreach ( $array as $k => $v ) {

  $array [$k] = sec ( $v );

  }

  } else if (is_string ( $array )) {

  //使用addslashes函数来处理

  $array = addslashes ( $array );

  } else if (is_numeric ( $array )) {

  $array = intval ( $array );

  }

  return $array;

  }

  //整型过滤函数

  function num_check($id) {

  if (! $id) {

  die ( '参数不能为空!' );

  } //是否为空的判断

  else if (inject_check ( $id )) {

  die ( '非法参数' );

  } //注入判断

  else if (! is_numetic ( $id )) {

  die ( '非法参数' );

  }

  //数字判断

  $id = intval ( $id );

  //整型化

  return $id;

  }

  //字符过滤函数

  function str_check($str) {

  if (inject_check ( $str )) {

  die ( '非法参数' );

  }

  //注入判断

  $str = htmlspecialchars ( $str );

  //转换html

  return $str;

  }

  function search_check($str) {

  $str = str_replace ( "_", "\_", $str );

  //把"_"过滤掉

  $str = str_replace ( "%", "\%", $str );

  //把"%"过滤掉

  $str = htmlspecialchars ( $str );

  //转换html

  return $str;

  }

  //表单过滤函数

  function post_check($str, $min, $max) {

  if (isset ( $min ) && strlen ( $str ) < $min) {

  die ( '最少$min字节' );

  } else if (isset ( $max ) && strlen ( $str ) > $max) {

  die ( '最多$max字节' );

  }

  return stripslashes_array ( $str );

  }

  //防注入函数

  function inject_check($sql_str) {

  return eregi ( 'select|inert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|UNION|into|load_file|outfile', $sql_str );

  // www.glzy8.com 进行过滤,防注入

  }

  function stripslashes_array(&$array) {

  if (is_array ( $array )) {

  foreach ( $array as $k => $v ) {

  $array [$k] = stripslashes_array ( $v );

  }

  } else if (is_string ( $array )) {

  $array = stripslashes ( $array );

  }

  return $array;

  }

  ?>