比较好用的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+SQL 注入攻击的技术实现以及预防办法
Jan 27 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
PDO::beginTransaction讲解
Jan 27 PHP
php数组遍历类与用法示例
May 24 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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
我的论坛源代码(二)
2006/10/09 PHP
PHP中for循环语句的几种变型
2006/11/26 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
flexigrid 参数说明
2010/11/23 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
js实现随机抽奖
2020/03/19 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
Python发送email的3种方法
2015/04/28 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
python区块及区块链的开发详解
2019/07/03 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
Ado与Ado.net的相同与不同
2014/12/08 面试题
大学生学习自我评价
2014/01/13 职场文书
中学教师管理制度
2014/01/14 职场文书
学员自我鉴定
2014/03/19 职场文书
工伤赔偿协议书
2014/04/15 职场文书
施工协议书范本
2014/04/22 职场文书