比较好用的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 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
PHP 彩色文字实现代码
Jun 29 PHP
PHP生成UTF8文件的方法
May 15 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
访问编码后的中文URL返回404错误的解决方法
Aug 20 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 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执行速度全攻略(上)
2006/10/09 PHP
Php Cookie的一个使用注意点
2008/11/08 PHP
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
Python 中Pickle库的使用详解
2018/02/24 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
python按照多个条件排序的方法
2019/02/08 Python
python同步两个文件夹下的内容
2019/08/29 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
StringBuilder和String的区别
2015/05/18 面试题
销售代表求职自荐信
2013/10/01 职场文书
档案检查欢迎词
2014/01/13 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
企业年会祝酒词
2015/08/11 职场文书
js实现上传图片到服务器
2021/04/11 Javascript
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS