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 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
ie6 动态缩略图不显示的原因
Jun 21 PHP
Php Ctemplate引擎开发相关内容
Mar 03 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
destoon常用的安全设置概述
Jun 21 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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中文字母数字验证码实现代码
2008/04/25 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
一张图带我们入门Python基础教程
2017/02/05 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
非常详细的C#面试题集
2016/07/13 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
会计应聘求职信范文
2013/12/17 职场文书
升学宴演讲稿
2014/09/01 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL