比较好用的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 相关文章推荐
通过html表格发电子邮件
Oct 09 PHP
第一节--面向对象编程
Nov 16 PHP
?生?D片??C字串
Dec 06 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
Windows下安装Memcached的步骤说明
Apr 25 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
kohana框架上传文件验证规则写法示例
Jul 14 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
全新Mac配置PHP开发环境教程
Feb 03 PHP
Laravel 5.3 学习笔记之 配置
Aug 28 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
php树型类实例
2014/12/05 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
你真的了解JavaScript吗?
2007/02/24 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
python解析xml模块封装代码
2014/02/07 Python
python psutil库安装教程
2018/03/19 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
医药工作者的求职信范文
2013/09/21 职场文书
师范生教师实习自我鉴定
2013/09/27 职场文书
团支书的期末学习总结自我评价
2013/11/01 职场文书
公司晚会策划方案
2014/05/17 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
地道战观后感400字
2015/06/04 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
python源码剖析之PyObject详解
2021/05/18 Python
用JS实现飞机大战小游戏
2021/06/09 Javascript
MySQL派生表联表查询实战过程
2022/03/20 MySQL
JS class语法糖的深入剖析
2022/07/07 Javascript