比较好用的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程序中的常见漏洞进行攻击(上)
Oct 09 PHP
用PHP发电子邮件
Oct 09 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
Aug 10 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
php中HTTP_REFERER函数用法实例
Nov 21 PHP
php程序内部post数据的方法
Mar 31 PHP
深入浅出php socket编程
May 13 PHP
PHP实现GIF图片验证码
Nov 04 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
PHP设计模式之组合模式定义与应用示例
Feb 01 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获取当前完整URL地址的函数
2014/12/21 PHP
PHP生成压缩文件实例
2015/02/07 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
学习YUI.Ext 第七天--关于View&amp;JSONView
2007/03/10 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Django数据库表反向生成实例解析
2018/02/06 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
酒店出纳岗位职责
2013/12/29 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
卖车协议书范例
2014/09/16 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL