比较好用的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 相关文章推荐
拼音码表的生成
Oct 09 PHP
PHP中的类-什么叫类
Nov 20 PHP
一个数据采集类
Feb 14 PHP
php chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
php的慢速日志引起的Mysql错误问题分析
May 13 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
php微信开发之关注事件
Jun 14 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 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
PHPThumb图片处理实例
2014/05/03 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
python利用lxml读写xml格式的文件
2017/08/10 Python
简单实现python进度条脚本
2017/12/18 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
Python调用C语言的实现
2019/07/26 Python
Python socket处理client连接过程解析
2020/03/18 Python
python如何调用百度识图api
2020/09/29 Python
python实现ping命令小程序
2020/12/28 Python
百联网上商城:i百联
2017/01/28 全球购物
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
了解AppleTalk协议吗
2014/04/01 面试题
大学生村官典型材料
2014/01/12 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
民主评议党员总结
2014/10/20 职场文书
介绍信格式样本
2015/05/05 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python