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 相关文章推荐
如何使用脚本模仿登陆过程
Nov 22 PHP
PHP 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
php生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
Nov 17 PHP
迁移PHP版本到PHP7
Feb 06 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 PHP
php命令行模式代码实例详解
Feb 26 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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者的疑难问答(1)
2006/10/09 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
php分页查询的简单实现代码
2017/03/14 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
python处理html转义字符的方法详解
2016/07/01 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Python测试模块doctest使用解析
2019/08/10 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
工作自我评价分享
2013/12/01 职场文书
大学军训感言800字
2014/02/27 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
安全承诺书格式范本
2015/04/28 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers
CSS的calc函数用法小结
2022/06/25 HTML / CSS