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 相关文章推荐
改进的IP计数器
Oct 09 PHP
PHP的FTP学习(四)
Oct 09 PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
php笔记之:php数组相关函数的使用
Apr 26 PHP
PHP在线生成二维码(google api)的实现代码详解
Jun 04 PHP
PHP修改session_id示例代码
Jan 08 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP命名空间简单用法示例
Dec 28 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 PHP
Yii2框架中一些折磨人的坑
Dec 15 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
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
克隆javascript对象的三个方法小结
2011/01/12 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
解决Python传递中文参数的问题
2015/08/04 Python
python开发之for循环操作实例详解
2015/11/12 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
Python 列表理解及使用方法
2017/10/27 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
python操作kafka实践的示例代码
2019/06/19 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
Python实现GIF图倒放
2020/07/16 Python
腾讯公司的一个sql题
2013/01/22 面试题
母亲追悼会答谢词
2014/01/27 职场文书
小区停车场管理制度
2014/01/27 职场文书
大学生心理活动总结
2014/07/04 职场文书
美容院合作经营协议书
2014/10/10 职场文书
2014年食堂工作总结
2014/11/20 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis
Python列表的索引与切片
2022/04/07 Python