比较好用的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读取目录下所有文件的代码
Jan 07 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
composer.lock文件的作用
Feb 03 PHP
eclipse php wamp配置教程
Jun 30 PHP
php实现网页端验证码功能
Jul 11 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
Laravel框架路由管理简单示例
May 07 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 批量删除 sql语句
2009/06/05 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python装饰器基础详解
2016/03/09 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
服装发布会策划方案
2014/05/22 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
学习保证书
2015/01/17 职场文书
项目安全员岗位职责
2015/02/15 职场文书
销售辞职信范文
2015/03/02 职场文书
运动会广播稿200字
2015/08/19 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
PyMongo 查询数据的实现
2021/06/28 Python