好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

一个简单的PHP防注入类 - php类库

一个简单的PHP防注入类

PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全.

PHP防注入类代码如下:

<?php  /**    * 参数处理类    * @author JasonWei    */   class  Params  {       public   $get  =  array ();         public   $post  =  array ();         function  __construct()      {  if  (! empty empty ( $_GET )) {       foreach  ( $_GET   as   $key  =>  $val ) {  if  ( is_numeric ( $val )) {       $this ->get[ $key ] =  $this ->getInt( $val );  }  else  {       $this ->get[ $key ] =  $this ->getStr( $val );  }      }  }  if  (! empty empty ( $_POST )) {       foreach  ( $_POST   as   $key  =>  $val ) {  if  ( is_numeric ( $val )) {       $this ->post[ $key ] =  $this ->getInt( $val );  }  else  {       $this ->post[ $key ] =  $this ->getStr( $val );  }      }  }      }         public   function  getInt( $number )      {  return   intval ( $number );      }         public   function  getStr( $string )      {  if  (!get_magic_quotes_gpc()) {       $string  =  addslashes ( $string );  }  return   $string ;      }         public   function  checkInject( $string )      {  return   eregi ( 'select|insert|update|delete|/*|*||./|union|into|load_file|outfile' ,  $string );      }         public   function  verifyId( $id  = null)      {  if  (! $id  ||  $this ->checkInject( $id ) || ! is_numeric ( $id )) {       $id  = false;  }  else  {       $id  =  intval ( $id );  } //开源代码phpfensi测试数据   return   $id ;      }  }  ?> 

例子二,代码如下:

<?php   /*************************     说明:       判断传递的变量中是否含有非法字符             如$_POST、$_GET       功能:       防注入       *************************/       //要过滤的非法字符        $ArrFiltrate = array ( "'" , "or" , "and" , "union" , "where" );       //出错后要跳转的url,不填则默认前一页        $StrGoUrl = "" ;       //是否存在数组中的值        function  FunStringExist( $StrFiltrate , $ArrFiltrate ){       foreach  ( $ArrFiltrate   as   $key => $value ){       if  ( eregi ( $value , $StrFiltrate )){          return  true;       }       }       return  false;       }       //合并$_POST 和 $_GET        if (function_exists( array_merge )){       $ArrPostAndGet = array_merge ( $HTTP_POST_VARS , $HTTP_GET_VARS );       } else {       foreach ( $HTTP_POST_VARS   as   $key => $value ){       $ArrPostAndGet []= $value ;       }       foreach ( $HTTP_GET_VARS   as   $key => $value ){       $ArrPostAndGet []= $value ;       }       }       //验证开始        foreach ( $ArrPostAndGet   as   $key => $value ){       if  (FunStringExist( $value , $ArrFiltrate )){       echo   "<script language='javascript'>alert('传递的信息中不得包含{',or,and,union}等非法字符请您把他们换成{‘,OR,AND,UNION}');</script>" ;       if  (emptyempty( $StrGoUrl )){       echo   "<scriptlanguage='javascript'>history.go(-1);</script>" ;       } else {       echo   "<scriptlanguage='javascript'>window.location='" . $StrGoUrl . "';</script>" ;       }       exit ;       }       }       /***************结束防止PHP注入*****************/       ?> 

查看更多关于一个简单的PHP防注入类 - php类库的详细内容...

  阅读:45次