简单实用的PHP防注入类实例


Posted in PHP onDecember 05, 2014

本文实例讲述了简单实用的PHP防注入类。分享给大家供大家参考。具体如下:

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

PHP防注入类代码如下:

<?php 

/** 

 * 参数处理类 

 * @author JasonWei 

 */ 

class Params 

{ 

    public $get = array(); 

 

    public $post = array(); 

 

    function __construct() 

    { 

 if (!emptyempty($_GET)) { 

     foreach ($_GET as $key => $val) { 

 if (is_numeric($val)) { 

     $this->get[$key] = $this->getInt($val); 

 } else { 

     $this->get[$key] = $this->getStr($val); 

 } 

     } 

 } 

 if (!emptyempty($_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); 

 }

 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 相关文章推荐
Windows PHP5和Apache的安装与配置
Jun 08 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
ThinkPHP连接数据库的方式汇总
Dec 05 #PHP
PHP生成RSS文件类实例
Dec 05 #PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 #PHP
ThinkPHP中redirect用法分析
Dec 05 #PHP
php查询ip所在地的方法
Dec 05 #PHP
smarty实现多级分类的方法
Dec 05 #PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 #PHP
You might like
如何使用PHP获取网络上文件
2006/10/09 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
Python标准库之循环器(itertools)介绍
2014/11/25 Python
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python调用fortran模块
2016/04/08 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
CSS3 box-sizing属性
2009/04/17 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
传媒专业推荐信范文
2013/11/23 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
理财计划书
2014/08/14 职场文书
小学生通知书评语
2014/12/31 职场文书
2015年保送生自荐信
2015/03/24 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python
Python实现归一化算法详情
2022/03/18 Python