简单实用的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+SQLite存储方案
Sep 04 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
PHP获取文件行数的方法
Jun 10 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
PHP简单实现记录网站访问量功能示例
Jun 06 PHP
php中如何执行linux命令详解
Nov 06 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 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
dedecms模板标签代码官方参考
2007/03/17 PHP
PHP获取url的函数代码
2011/08/02 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
各种快递查询--Api接口
2016/04/26 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
React组件refs的使用详解
2018/02/09 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
python类中super() 的使用解析
2019/12/19 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
python绘制分布折线图的示例
2020/09/24 Python
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
二年级班级文化建设方案
2014/05/10 职场文书
社保委托书怎么写
2014/08/02 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书