比较好用的PHP防注入漏洞过滤函数代码


Posted in PHP onApril 11, 2012
<?PHP 
//PHP整站防注入程序,需要在公共文件中require_once本文件 
//判断magic_quotes_gpc状态 
if (@get_magic_quotes_gpc ()) { 
$_GET = sec ( $_GET ); 
$_POST = sec ( $_POST ); 
$_COOKIE = sec ( $_COOKIE ); 
$_FILES = sec ( $_FILES ); 
} 
$_SERVER = sec ( $_SERVER ); 
function sec(&$array) { 
//如果是数组,遍历数组,递归调用 
if (is_array ( $array )) { 
foreach ( $array as $k => $v ) { 
$array [$k] = sec ( $v ); 
} 
} else if (is_string ( $array )) { 
//使用addslashes函数来处理 
$array = addslashes ( $array ); 
} else if (is_numeric ( $array )) { 
$array = intval ( $array ); 
} 
return $array; 
} 
//整型过滤函数 
function num_check($id) { 
if (! $id) { 
die ( '参数不能为空!' ); 
} //是否为空的判断 
else if (inject_check ( $id )) { 
die ( '非法参数' ); 
} //注入判断 
else if (! is_numetic ( $id )) { 
die ( '非法参数' ); 
} 
//数字判断 
$id = intval ( $id ); 
//整型化 
return $id; 
} 
//字符过滤函数 
function str_check($str) { 
if (inject_check ( $str )) { 
die ( '非法参数' ); 
} 
//注入判断 
$str = htmlspecialchars ( $str ); 
//转换html 
return $str; 
} 
function search_check($str) { 
$str = str_replace ( "_", "\_", $str ); 
//把"_"过滤掉 
$str = str_replace ( "%", "\%", $str ); 
//把"%"过滤掉 
$str = htmlspecialchars ( $str ); 
//转换html 
return $str; 
} 
//表单过滤函数 
function post_check($str, $min, $max) { 
if (isset ( $min ) && strlen ( $str ) < $min) { 
die ( '最少$min字节' ); 
} else if (isset ( $max ) && strlen ( $str ) > $max) { 
die ( '最多$max字节' ); 
} 
return stripslashes_array ( $str ); 
} 
//防注入函数 
function inject_check($sql_str) { 
return eregi ( 'select|inert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|UNION|into|load_file|outfile', $sql_str ); 
// 3water.com 进行过滤,防注入 
} 
function stripslashes_array(&$array) { 
if (is_array ( $array )) { 
foreach ( $array as $k => $v ) { 
$array [$k] = stripslashes_array ( $v ); 
} 
} else if (is_string ( $array )) { 
$array = stripslashes ( $array ); 
} 
return $array; 
} 
?>
PHP 相关文章推荐
php遍历数组的方法分享
Mar 22 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
调整PHP的性能
Oct 30 PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
php输出全球各个时区列表的方法
Mar 31 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
PHP实现微信申请退款功能
Oct 01 PHP
YII框架页面缓存操作示例
Apr 29 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 #PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 #PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 #PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 #PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 #PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 #PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 #PHP
You might like
PHP入门速成(2)
2006/10/09 PHP
php cookie 登录验证示例代码
2009/03/16 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
Django数据库操作之save与update的使用
2020/04/01 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
渗透攻击的测试步骤
2014/06/07 面试题
正隆泰信息技术有限公司上机题
2012/06/14 面试题
英文自我鉴定
2013/12/10 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
保护动物的标语
2014/06/11 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
毕业典礼邀请函
2015/01/31 职场文书
幼儿园教师求职信
2015/03/20 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书