简单实用的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 相关文章推荐
一次编写,随处运行
Oct 09 PHP
Email+URL的判断和自动转换函数
Oct 09 PHP
PHP个人网站架设连环讲(二)
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
php session 检测和注销
Mar 16 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
php中设置index.php文件为只读的方法
Feb 06 PHP
PHP判断变量是否为0的方法
Feb 08 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
PHP Cookie学习笔记
Aug 23 PHP
Yii2中datetime类的使用
Dec 17 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
PHP 实现缩略图
2021/03/09 PHP
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
Python调用C语言开发的共享库方法实例
2015/03/18 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
logging level级别介绍
2020/02/21 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
AJAX都有哪些有点和缺点
2012/11/03 面试题
现代化办公人员工作的自我评价
2013/10/16 职场文书
自荐书范文
2013/12/08 职场文书
大学生求职计划书
2014/04/30 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
稽核岗位职责范本
2015/04/13 职场文书
千手观音观后感
2015/06/03 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
volatile保证可见性及重排序方法
2022/08/05 Java/Android