比较好用的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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
phpMyAdmin下载、安装和使用入门教程
May 31 PHP
php字符串截取中文截取2,单字节截取模式
Dec 10 PHP
php 图片加水印与上传图片加水印php类
May 12 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
php保存任意网络图片到服务器的方法
Apr 14 PHP
PHP获取数组最大值下标的方法
May 12 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
Yii框架连表查询操作示例
Sep 06 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
PHP的面向对象编程
2006/10/09 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
Python生成词云的实现代码
2020/01/14 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
员工考核评语大全
2014/04/26 职场文书
建筑结构施工求职信
2014/07/11 职场文书
四年级学生期末评语
2014/12/26 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers