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 动态执行带有参数的类方法
Apr 10 PHP
php笔记之常用文件操作
Oct 12 PHP
服务器web工具 php环境下
Dec 29 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
Window下PHP三种运行方式图文详解
Jun 11 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
php多任务程序实例解析
Jul 19 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 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中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
JavaScript中this详解
2015/09/01 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
Javascript的this详解
2019/03/23 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
原生JS实现留言板
2020/03/26 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python获取脚本所在目录的正确方法
2014/04/15 Python
Django自定义分页效果
2017/06/27 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
店长助理岗位职责
2013/12/13 职场文书
情侣吵架检讨书
2014/02/05 职场文书
公务员转正考察材料
2014/02/07 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
班主任工作实习计划
2015/01/16 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
KVM基础命令详解
2022/04/30 Servers