简单实用的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 相关文章推荐
php 调用远程url的六种方法小结
Nov 02 PHP
php代码书写习惯优化小结
Jun 20 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
使用php批量删除数据库下所有前缀为prefix_的表
Jun 09 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
PHP导入导出Excel代码
Jul 07 PHP
yii用户注册表单验证实例
Dec 26 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
Apr 06 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
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
linux系统都有哪些运行级别
2016/03/26 面试题
城市规划毕业生求职信
2013/10/10 职场文书
师范应届生教师求职信
2013/11/05 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
工作态度检讨书范文
2015/05/06 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python
MYSQL 运算符总结
2021/11/11 MySQL