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


Posted in PHP onJune 29, 2013

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

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

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

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

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

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

PHP 相关文章推荐
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
Oct 28 PHP
php文件管理基本功能简单操作
Jan 16 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
PHP反射实际应用示例
Apr 03 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
laravel使用数据库测试注意事项
Apr 10 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中header的用法详解
2013/06/07 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
PHP实现简易图形计算器
2020/08/28 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
python字典键值对的添加和遍历方法
2016/09/11 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
Python中str.join()简单用法示例
2018/03/20 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
python实现windows下文件备份脚本
2018/05/27 Python
python模块导入的细节详解
2018/12/10 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
运动会开幕式邀请函
2014/01/22 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
完整版商业计划书
2014/09/15 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书