简单实用的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内存溢出问题的解决方法
Jun 25 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
PHP+jQuery 注册模块开发详解
Oct 14 PHP
php常用hash加密函数
Nov 22 PHP
php定时执行任务设置详解
Feb 06 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
Symfony查询方法实例小结
Jun 28 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
PHP连续签到功能实现方法详解
Dec 04 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开启安全模式后禁用的函数集合
2011/06/26 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
React Router基础使用
2017/01/17 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
详解nodejs http请求相关总结
2019/03/31 NodeJs
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
js实现带搜索功能的下拉框
2020/01/11 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
Python 字符串定义
2009/09/25 Python
python正则实现提取电话功能
2018/02/24 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
python 根据字典的键值进行排序的方法
2019/07/24 Python
Python用input输入列表的实例代码
2020/02/07 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
保送生自荐信范文
2013/10/06 职场文书