通俗易懂的php防注入代码


Posted in PHP onApril 07, 2010

介绍两种方法吧,首先请把以下代码保存为safe.php放在网站根目录下,然后在每个php文件前加include(“/safe.php“);即可 :

php防注入代码方法一:

<?php 
//要过滤的非法字符 
$ArrFiltrate=array(”‘”,”;”,”union”); 
//出错后要跳转的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(\”非法字符\”);</script>”; 
if (emptyempty($StrGoUrl)){ 
echo “<script language=\”javascript\”>history.go(-1);</script>”; 
}else{ 
echo “<script language=\”javascript\”>window.location=\””.$StrGoUrl.”\”;</script>”; 
} 
exit; 
} 
} 
?>

php防注入代码方法二:
/* 过滤所有GET过来变量 */ 
foreach ($_GET as $get_key=>$get_var) 
{ 
if (is_numeric($get_var)) { 
$get[strtolower($get_key)] = get_int($get_var); 
} else { 
$get[strtolower($get_key)] = get_str($get_var); 
} 
} 
/* 过滤所有POST过来的变量 */ 
foreach ($_POST as $post_key=>$post_var) 
{ 
if (is_numeric($post_var)) { 
$post[strtolower($post_key)] = get_int($post_var); 
} else { 
$post[strtolower($post_key)] = get_str($post_var); 
} 
} 
/* 过滤函数 */ 
//整型过滤函数 
function get_int($number) 
{ 
return intval($number); 
} 
//字符串型过滤函数 
function get_str($string) 
{ 
if (!get_magic_quotes_gpc()) { 
return addslashes($string); 
} 
return $string; 
}
PHP 相关文章推荐
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
PHP版自动生成文章摘要
Jul 23 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
php遍历文件夹所有文件子文件夹函数代码
Nov 27 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
php删除指定目录的方法
Apr 03 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 #PHP
用PHP实现读取和编写XML DOM代码
Apr 07 #PHP
php session和cookie使用说明
Apr 07 #PHP
DedeCMS dede_channeltype表字段注释
Apr 07 #PHP
php抓取https的内容的代码
Apr 06 #PHP
php中几种常见安全设置详解
Apr 06 #PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 #PHP
You might like
一个用于MySQL的PHP XML类
2006/10/09 PHP
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
js初始化验证实例详解
2016/11/26 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
vue实现图片上传到后台
2020/06/29 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
将Python代码打包为jar软件的简单方法
2015/08/04 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
如何写python的配置文件
2020/06/07 Python
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
什么是GWT的Module
2013/01/20 面试题
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
2013英文求职信模板范文
2013/11/15 职场文书
市场营销管理制度
2014/01/29 职场文书
生物科学专业职业规划书范文
2014/02/11 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
新闻学专业求职信
2014/07/28 职场文书
幼儿园辞职信
2015/05/13 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
详解MySQL 用户权限管理
2021/04/20 MySQL