简单实用的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中call_user_func_array()函数的用法演示
Feb 05 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
php调用mysql存储过程实例分析
Dec 29 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
PHP封装的简单连接MongoDB类示例
Feb 13 PHP
phpStorm+XDebug+chrome 配置详解
Apr 01 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 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注入点构造代码
2008/06/14 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
php 发送带附件邮件示例
2014/01/23 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
python实现多线程抓取知乎用户
2016/12/12 Python
Python自动生产表情包
2017/03/17 Python
Python函数返回不定数量的值方法
2019/01/22 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
Python持续监听文件变化代码实例
2020/07/22 Python
Python如何读写二进制数组数据
2020/08/01 Python
Python如何实现机器人聊天
2020/09/10 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL