比较好用的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标记的PHP函数
Oct 09 PHP
Zend Studio 无法启动的问题解决方法
Dec 04 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
php URL验证正则表达式
Jul 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
Jun 23 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 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
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
使用graphics.py实现2048小游戏
2015/03/10 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
Python中的引用知识点总结
2019/05/20 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
Django url 路由匹配过程详解
2021/01/22 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
linux面试题参考答案(5)
2014/09/01 面试题
红旗团支部事迹材料
2014/01/27 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
Redis 异步机制
2022/05/15 Redis
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript