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 相关文章推荐
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
php session的锁和并发
Jan 22 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
PHPExcel 修改已存在Excel的方法
May 03 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 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中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php自定文件保存session的方法
2014/12/10 PHP
php实现插入排序
2015/03/29 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
python中的lambda表达式用法详解
2016/06/22 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
python文件拆分与重组实例
2018/12/10 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Python单元测试与测试用例简析
2019/11/09 Python
python with (as)语句实例详解
2020/02/04 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
优秀团员事迹材料2000字
2014/08/20 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android