探讨:web上存漏洞及原理分析、防范方法


Posted in PHP onJune 29, 2013

网站提供上存功能,是很多站点经常会有功能,商城,论坛还有常见一些网盘站点。常见互联网上面,我们也是经常听说,某某站点出现上存漏洞,某某开源项目有上存漏洞。 从互联网开始出现动态程序,上存漏洞像幽灵一样,频繁的出现在各种系统中。为什么,一个上存漏洞会这么频繁出现呢。而且,有些系统反复修补,多次还没有修补成功!其实主要问题,还是出现在上存原理上面。我们先看看,上存过程。
网站上存过程分析

<?php
header("Content-type: text/html; charset=utf-8"); 
if($_FILES)
{
 echo '<pre>';
 var_dump($_FILES);
 echo '</pre>';
}
?>
<form action="" enctype="multipart/form-data" method="POST">
<input type="file" name="txt" size="50">
<input name="Submit" type="submit" value="提交" >
</form>

以上是个简单测试例子,我们看看
探讨:web上存漏洞及原理分析、防范方法

我们来分析下:
name来自 上存时候选择文件名称
type 是文件类型, 这个类型那里来的呢?呵呵,这里非常关键的。 很多时候,很多同人会认为,这个是服务器自动判断生成的。 如果是这样想,觉得也有可能。 php 封装了上存,它自带类库好像可以的。  但是,反过来想想,你随便选择个什么格式文件,都会有格式类型。这样一想,我们推断这个值,可能也来自用户输入的。 我们来抓包看看我们类型。
探讨:web上存漏洞及原理分析、防范方法
type值 也来自,用户输入值了。
size来自程序计算上存文件大小,这个是自动计算的。 相比我们都清楚的。

你说这么多有啥样呢?
想必有朋友开始问了,我上面分析上存文件格式 ,跟开发出现漏洞有什么关联呢。 其实,我们想想,上面说的,一个文件名称name属性,以及文件类型type属性。 在我们上存文件,后端处理时候,会经常用到的。 作为开发者,在使用这2个变量,一定要继续执行“一切输入代码是有害的”原则。你在使用时候,要把它当作,跟其它get,post 获取变量一样处理。 要检测,过滤一切输入变量。
我们经常做功能是,限定用户输入必须是某种格式文件,然后保存为该格式。分析到这里,下面有很多需要继续分析地方,今天先提出大纲。接下来会分析这样常见3类上存漏洞。
1.使用用户文件名,生成文件,特殊字符过滤不严格,导致文件生成出现漏洞
2.移动文件目录时候,由于采用用户传入的文件名拼接,生成到错误目录
3.相信用户输入type 类型,直接将用户文件名保存为文件

PHP 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
使用无限生命期Session的方法
Oct 09 PHP
PHP生成月历代码
Jun 14 PHP
中英文字符串翻转函数
Dec 09 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
May 26 PHP
php数据库备份还原类分享
Mar 20 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 #PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 #PHP
解析PHP中empty is_null和isset的测试
Jun 29 #PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 #PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 #PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 #PHP
解析PHP 使用curl提交json格式数据
Jun 29 #PHP
You might like
PHP脚本的10个技巧(7)
2006/10/09 PHP
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
php防止sql注入的方法详解
2017/02/20 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
基于jQuery的可以控制左右滚动及自动滚动效果的代码
2010/07/25 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
Django中url的反向查询的方法
2018/03/14 Python
Python3实现购物车功能
2018/04/18 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
三万活动总结
2014/04/28 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
学生检讨书范文
2014/10/30 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
个人简历求职信范文
2015/03/20 职场文书