比较好用的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&amp;&amp;mysql)五
Oct 09 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
php5 图片验证码实现代码
Dec 11 PHP
深入解析PHP中逗号与点号的区别
Aug 05 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
PHP 根据key 给二维数组分组
Dec 09 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 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反转字符串函数strrev()函数的用法
2012/02/04 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
Python 可爱的大小写
2008/09/06 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Python实战购物车项目的实现参考
2019/02/20 Python
python实现抽奖小程序
2020/04/15 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
Django多数据库联用实现方法解析
2020/11/12 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
eBay德国站:eBay.de
2017/09/14 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
优秀党务工作者事迹材料
2014/05/07 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
建筑安全生产责任书
2014/07/22 职场文书
岳麓书院导游词
2015/02/03 职场文书
教师辞职书范文
2015/02/26 职场文书
小学教师节活动总结
2015/03/20 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android