简单实用的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 29 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
php笔记之:php数组相关函数的使用
Apr 26 PHP
php实现的漂亮分页方法
Apr 17 PHP
php面象对象数据库操作类实例
Dec 02 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
PHP递归实现层级树状展开
Apr 01 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
基于PHP实现生成随机水印图片
Dec 09 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
推荐文章系统(一)
2006/10/09 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
python的依赖管理的实现
2019/05/14 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
python 初始化一个定长的数组实例
2019/12/02 Python
Django如何实现防止XSS攻击
2020/10/13 Python
网络书店创业计划书
2014/02/07 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
化妆品活动策划方案
2014/05/23 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏