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


Posted in PHP onJune 29, 2013

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

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

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

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

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

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

PHP 相关文章推荐
初学CAKEPHP 基础教程
Nov 02 PHP
php文件上传表单摘自drupal的代码
Feb 15 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
详解php中 === 的使用
Oct 24 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
Yii2框架自定义类统一处理url操作示例
May 25 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 17 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 PDO中文乱码解决办法
2009/07/20 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
理解Javascript_05_原型继承原理
2010/10/13 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
Node.js实现文件上传
2016/07/05 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
JsChart组件使用详解
2018/03/04 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
Python脚本处理空格的方法
2016/08/08 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
python批量修改交换机密码的示例
2020/09/22 Python
高中生毕业评语
2014/12/30 职场文书
音乐课外活动总结
2015/05/09 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python