一个简单的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类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29536