PHP防注入安全代码


Posted in PHP onApril 09, 2008

简述:/*************************   
说明:   
判断传递的变量中是否含有非法字符   
如$_POST、$_GET   
功能:防注入   
**************************/      

<?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;      
  }      
}      
?> 
    

保存为checkpostandget.php     
然后在每个php文件前加include(“checkpostandget.php“);即可     

方法2     

/* 过滤所有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 相关文章推荐
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
php 缩略图实现函数代码
Jun 23 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
详解php框架Yaf路由重写
Jun 20 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 #PHP
PHP中的extract的作用分析
Apr 09 #PHP
如何在PHP程序中防止盗链
Apr 09 #PHP
php的access操作类
Apr 09 #PHP
php时间不正确的解决方法
Apr 09 #PHP
php Ajax乱码
Apr 09 #PHP
PHP提取中文首字母
Apr 09 #PHP
You might like
用php来检测proxy
2006/10/09 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python多线程编程(五):死锁的形成
2015/04/05 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
Python实现的栈(Stack)
2018/01/26 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
python根据时间获取周数代码实例
2019/09/30 Python
安装PyInstaller失败问题解决
2019/12/14 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
橄榄树药房:OLIVEDA
2019/09/01 全球购物
小学教师师德感言
2014/02/10 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
python批量创建变量并赋值操作
2021/06/03 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
mysql主从复制的实现步骤
2021/10/24 MySQL