比较好用的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面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
php数组中包含中文的排序方法
Jun 03 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
如何离线执行php任务
Feb 21 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 PHP
laravel 执行迁移回滚示例
Oct 23 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
Banner程序
2006/10/09 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
浅谈php的优缺点
2015/07/14 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
Python 功能和特点(新手必学)
2015/12/30 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
解决Python一行输出不显示的问题
2018/12/03 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
英国女性时尚品牌:Apricot
2018/12/04 全球购物
六年级数学教学反思
2014/02/03 职场文书
欢迎横幅标语
2014/06/17 职场文书
客户答谢会活动方案
2014/08/31 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
老人院义工活动感想
2015/08/07 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL