浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)


Posted in PHP onJune 29, 2013

这类漏洞,主要是可以读取用户传入路径名称,采用不正确的过滤方法,导致恶意用户,将文件上存到非预期的地方,带来安全隐患。

其实,我们抓住几个地方即可,我们先来分析下,既然用户要上存文件,而且文件将是多种多样格式;可能有的文件内容与用户传入格式不一致,有的文件内容还夹杂木马代码。 那么,我们让用户上存文件,跟站点文件做一个分别授权,做隔离。

让保存上存目录独立开来,目录权限只读不能执行
这一步从系统设计加以授权,无论你上次什么文件,都不可能执行到。就算我不做任何检测,你的文件都上存到这里了,也不会对我系统构成安全。(如果有用户上存一些反动言语的图片,那另外需要处理的)

不直接使用服务器传入值,所有都要进行检测
这类跟我们做一切输入都是有害原则一样,对于客户端传入的:type, name ,都要进行判断,不直接使用。对于要生成到某个目录,某个文件名。
文件名最好方法是:自己写死目录(不要读取传入目录),文件名,最好自己随机生成,不读取用户文件名。文件扩展名,可以取最右边”.”后面字符。
以上2个方法,刚好从2个方面对上存做了整体约束。
方法2 : 保存上存文件名,按照自己指定目录写入,并且文件名自己生成的。
方法1:只要保证文件写对了位置,然后从配置上,对写入目录进行权限控制,这个是治本。可以做到,你无论上存什么文件,都让你没有权限跳出去可以运行。

以上2个方法,一起使用,可以保证文件正确存到地方,然后,权限可以控制。 这里顺便说明下, 判断用户上存文件是否满足要求类型,就直接检查文件扩展名,只要满足扩展名就让上存。 反正,做了执行权限限制,你不按要求上存内容,也无妨。 反正,不能执行,也不会有多大危害性的。
正确步骤:
1.读取文件名,验证扩展名是不是在范围内
2.自己定义生成的文件名,目录,扩展名可以来自文件名扩展名。 其它值,都自己配置,不读取上存中内容
3.将文件 移到新目录(这个目录权限设置只读)

好了,以上是一般操作方法,希望对大家有帮助,也欢迎朋友们交流!也希望提供更好的方法!接下来,我会在web 开发中,常见一些方法功能安全设计方面继续写一些我的心得,看法!

PHP 相关文章推荐
第二节--PHP5 的对象模型
Nov 16 PHP
Windows PHP5和Apache的安装与配置
Jun 08 PHP
php木马webshell扫描器代码
Jan 25 PHP
初品cakephp 入门基础
Feb 16 PHP
PHP 第一节 php简介
Apr 28 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
php保存任意网络图片到服务器的方法
Apr 14 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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
PHP 过滤页面中的BOM(实现代码)
Jun 29 #PHP
You might like
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
python 网络编程常用代码段
2016/08/28 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
Django 自定义分页器的实现代码
2019/11/24 Python
最小二乘法及其python实现详解
2020/02/24 Python
Python telnet登陆功能实现代码
2020/04/16 Python
python实现计算图形面积
2021/02/22 Python
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
初中女生自我鉴定
2013/12/19 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
村捐赠仪式答谢词
2014/01/21 职场文书
大学毕业感言50字
2014/02/07 职场文书
超市创意活动方案
2014/08/15 职场文书
跳高加油稿
2015/07/21 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书