简单实用的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制作静态网站的模板框架
Oct 09 PHP
动易数据转成dedecms的php程序
Apr 07 PHP
PHP自定义函数收代码
Aug 01 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
php使用正则验证中文
Apr 06 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
php微信开发自定义菜单
Aug 27 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
laravel 实现登陆后返回登陆前的页面方法
Oct 03 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
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
js实现手机web图片左右滑动效果
2017/12/29 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
Python中的字符串替换操作示例
2016/06/27 Python
用Python实现KNN分类算法
2017/12/22 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
python hook监听事件详解
2018/10/25 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
python使用配置文件过程详解
2019/12/28 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
详解Python设计模式之策略模式
2020/06/15 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
高一新生军训感言
2014/03/02 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
产品售后服务承诺书
2014/05/21 职场文书