简单实用的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模拟SQL Server的两个日期处理函数
Oct 09 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP中的strtr函数使用介绍(str_replace)
Oct 20 PHP
php中simplexml_load_string使用实例分享
Feb 13 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 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使用json_encode对变量json编码
2014/04/07 PHP
php查询操作实现投票功能
2016/05/09 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
php实现文件预览功能
2017/05/23 PHP
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
Python实现队列的方法
2015/05/26 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
PyQt5实现拖放功能
2018/04/25 Python
python解析含有重复key的json方法
2019/01/22 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
python3实现单目标粒子群算法
2019/11/14 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
出纳岗位职责范本
2013/12/01 职场文书
师范生的个人求职信范文
2014/01/04 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
企业环保标语
2014/06/10 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang