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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
php Ajax乱码
Apr 09 PHP
php 动态执行带有参数的类方法
Apr 10 PHP
php代码运行时间查看类代码分享
Aug 06 PHP
PHP中的Streams详细介绍
Nov 12 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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 daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Python上下文管理器和with块详解
2017/09/09 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
详解Python中is和==的区别
2019/03/21 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
材料物理专业个人求职信
2013/12/15 职场文书
面料业务员岗位职责
2013/12/26 职场文书
家长对小学生的评语
2014/01/28 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android