php 应用程序安全防范技术研究


Posted in PHP onSeptember 25, 2009

PHP安全防范程序模型

/* PHP防注入跨站V1.0 

在您的页面顶部添加: require(“menzhi_injection.php”); 

即可实现通用防止SQL注入,以及XSS跨站漏洞。 

##################缺陷以及改进################## 

程序还有很多缺陷,希望大家能帮助改进 

##################参考以及鸣谢################## 

Neeao'ASP SQL通用防注入程序 V3.0 

部分代码参考自Discuz! 

*/ 

error_reporting(0); 

define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); 

$menzhi_injection="'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|or|char|declare"; 

$menzhi_injection = explode("|",$menzhi_injection); 

foreach(array('_GET', '_POST', '_COOKIE','_REQUEST') as $_request) { 

foreach($$_request as $_key => $_value) { 

//$_value = strtolower($_value); 

$_key{0} != '_' && $$_key = daddslashes($_value); 

foreach($menzhi_injection as $kill_key => $kill_value) { 

if(substr_count($_value,$kill_value)>0) { 

echo ""; 

unset($_value); 

exit(); 

} 

} 

//echo " 

".$_value; 

} 

} 

function daddslashes($string) { 

if(!MAGIC_QUOTES_GPC) { 

if(is_array($string)) { 

foreach($string as $key => $val) { 

$string[$key] = daddslashes($val); 

} 

} else { 

$string = addslashes($string); 

} 

} 

$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1',str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string)); 

return $string; 

} 

?>

使用说明

在您的页面顶部添加:“require(“menzhi_injection.php”);” , 即可实现通用防止SQL注入,以及XSS跨站漏洞。调用本程序,我们使用require() 而不使用include() ,因为require()调用文件如果出错,将终止程序运行,include()并不理会。并且require()调用文件时,程序一运行,会先调用外本文件。而inculde()则是运行到该行时才开始执行。基于函数特性,我们选择require()。 您还可以根据实际需要自行增加或者删除$menzhi_injection变量中的过滤字符,来达到更好的防御效果。 再者您可以自行修改代码,或许会有有意外收获。普通注射都可以防御,以下测试仅供调侃,下面是对一句话木马的测试效果:


php 应用程序安全防范技术研究

嘿嘿,动心了就在您的页面顶部调用吧。记住是“require(“menzhi_injection.php”);”哦。这只是提起大家兴趣的噱头,请自行测试吧。

缺陷以及待改进

由于此程序只是外部调用,只是处理了外部提交的变量,并没有对您的应用程序作系统分析,所以存在很多局限性,请谨慎使用。 对于使用GBK编码的程序,还存在双字节编码漏洞风险,本程序虽然可以处理该漏洞。但遏制这些漏洞,还是需要从根源做起。需要处理数据库连接文件,我们可以添加 character_set_client=binary 。Discuz!7.0的数据库连接类db_mysql.class.php写的就非常不错,大家可以参考借鉴。当然这些并不是这个小程序所能涉及到的范畴。

而且此程序并没有过滤 $_SERVER $_ENV $_FILES系统变量。比如对于$_SERVER['HTTP_X_FORWARDED_FOR']系统获取IP时,黑客可以通过劫持修改HTTP原始请求包来更改其值,本程序是可以处理这些漏洞。但是作为程序员我们需要的是从根源就对外部变量处理,防患于未然,未雨绸缪吧。

程序很潦草,欢迎大家测试使用,有什么意见建议直接联系我吧。

结束语

最后祝大家学习有成,工作顺利,向所有辛勤工作的PHPers致敬。

PHP 相关文章推荐
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
smarty表格换行实例
Dec 15 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
PHP实现微信发红包程序
Aug 24 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
Oct 26 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
php实现遍历多维数组的方法
Nov 25 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 #PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 #PHP
php 代码优化的42条建议 推荐
Sep 25 #PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 #PHP
PHP 日常开发小技巧
Sep 23 #PHP
php程序之die调试法 快速解决错误
Sep 17 #PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 #PHP
You might like
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
Ajax基础知识详解
2017/02/17 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现apahce网站日志分析示例
2014/04/02 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
什么是数据抽象
2016/11/26 面试题
社区八一活动方案
2014/02/03 职场文书
大学生励志演讲稿
2014/04/25 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
环境科学专业求职信
2014/08/04 职场文书
民用住房租房协议书
2014/10/29 职场文书
行政答辩状范文
2015/05/21 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
python编写五子棋游戏
2021/05/25 Python
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL
Python中re模块的元字符使用小结
2022/04/07 Python