简单实用的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 相关文章推荐
用Flash图形化数据(二)
Oct 09 PHP
PHP 和 XML: 使用expat函数(三)
Oct 09 PHP
PHP开发中常用的三个表单验证函数使用小结
Mar 03 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
php实现分页工具类分享
Jan 09 PHP
YII实现分页的方法
Jul 09 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
详解php比较操作符的安全问题
Dec 03 PHP
php中foreach结合curl实现多线程的方法分析
Sep 22 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
PHP convert_uudecode()函数讲解
Feb 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
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
Js 中debug方式
2010/02/07 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
Python字典操作简明总结
2015/04/13 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
python实现图像识别功能
2018/01/29 Python
pandas的qcut()方法详解
2019/07/06 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
python实现三壶谜题的示例详解
2020/11/02 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
《燕子》教学反思
2014/02/18 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
计算机软件专业求职信
2014/06/10 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
房产授权委托书范本
2014/09/22 职场文书
档案管理员岗位职责
2015/02/12 职场文书