比较好用的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 date函数参数详解
Nov 27 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
php程序效率优化的一些策略小结
Jul 17 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
Jul 03 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
基于laravel缓冲cache的用法详解
Oct 23 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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
微信扫描二维码登录网站代码示例
2013/12/30 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
PHP Reflection API详解
2015/05/12 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
dataframe设置两个条件取值的实例
2018/04/12 Python
在python中修改.properties文件的操作
2020/04/08 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
python excel和yaml文件的读取封装
2021/01/12 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
视光学毕业生自荐书范文
2014/02/13 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
奥运会口号
2014/06/13 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
单位授权委托书范本
2014/09/26 职场文书
音乐剧猫观后感
2015/06/04 职场文书
培训心得体会怎么写
2016/01/25 职场文书
MySQL读取JSON转换的方式
2022/03/18 MySQL