比较好用的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 相关文章推荐
php5.2时间相差8小时
Jan 15 PHP
php cli 方式 在crotab中运行解决
Feb 08 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
php中get_object_vars()方法用法实例
Feb 08 PHP
php源码 fsockopen获取网页内容实例详解
Sep 24 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 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
isset和empty的区别
2007/01/15 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
日期 时间js控件
2009/05/07 Javascript
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python自定义一个异常类的方法
2019/06/27 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
中专自我鉴定范文
2013/10/16 职场文书
银行财务部实习生的自我鉴定
2013/11/27 职场文书
安全标语口号
2014/06/09 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
办公室卫生管理制度
2015/08/04 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
linux目录管理方法介绍
2022/06/01 Servers