简单实用的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 header下载函数
Jan 31 PHP
PHP中的use关键字概述
Jul 23 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
PHP如何将XML转成数组
Apr 04 PHP
php获取POST数据的三种方法实例详解
Dec 20 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
PHP文件上传小程序 适合初学者学习!
May 23 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 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编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
jQuery autocomplete插件修改
2009/04/17 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
Three.js基础部分学习
2017/01/08 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
详解Python中类的定义与使用
2017/04/11 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
荷兰超市:DEEN
2018/03/14 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
出纳的岗位职责
2013/11/09 职场文书
机械工程师的岗位职责
2013/11/17 职场文书
《泉水》教学反思
2014/04/11 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
Python学习之包与模块详解
2022/03/19 Python
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers