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


Posted in PHP onJune 29, 2013

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

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

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

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

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

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

PHP 相关文章推荐
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
php实现的农历算法实例
Aug 11 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
Dec 14 PHP
Yii使用技巧大汇总
Dec 29 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
Laravel关系模型指定条件查询方法
Oct 10 PHP
php TP5框架生成二维码链接
Apr 01 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
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
prototype 的说明 js类
2006/09/07 Javascript
5 cool javascript apps
2007/03/24 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python利用OpenCV2实现人脸检测
2020/04/16 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
基于python实现对文件进行切分行
2020/04/26 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
如何整合JQuery和Prototype
2014/01/31 面试题
25道Java面试题集合
2013/05/21 面试题
八一建军节感言
2014/02/28 职场文书
出国留学经济担保书
2014/04/01 职场文书
学前教育专业求职信
2014/09/02 职场文书
房产协议书范本
2014/10/18 职场文书
党的群众路线调研报告
2014/11/03 职场文书
先进人物事迹材料
2014/12/29 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
党员转正意见怎么写
2015/06/03 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书