简单实用的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中变量及部分适用方法
Mar 27 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
May 12 PHP
PHP实现的购物车类实例
Jun 17 PHP
php post大量数据时发现数据丢失问题解决方法
Jun 20 PHP
php实现遍历多维数组的方法
Nov 25 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 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读取PDF内容配合Xpdf的使用
2012/11/24 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
PHP引用的调用方法分析
2016/04/25 PHP
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
Python3基础之list列表实例解析
2014/08/13 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
Python实现数字的格式化输出
2020/08/01 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
某公司C#程序员面试题笔试题
2014/05/26 面试题
写给女朋友的检讨书
2014/01/28 职场文书
单位绩效考核方案
2014/05/11 职场文书
费用申请报告范文
2015/05/15 职场文书
金榜题名主持词
2015/07/02 职场文书