Web安全开发指南--文件系统
6.1、上传文件功能
|
简要描述 |
文件上传漏洞是由于文件上传功能实现代码没有对用户上传的文件进行正确处理,导致允许攻击者向服务某个目录上传文件。 |
|
|
解决方案 |
上传文件功能只对登录用户开放; 同时通过文件头和文件扩展名来判断文件类型; 判断文件类型时尽量使用黑名单的方式,可以使用较粗粒度方式,比如过滤”.php”字串(忽略大小写)来防止php文件的上传; 过滤上传路径或文件名中的NULL字符,防止NULL字符截断; 如果上传的文件为图片,可对图片进行压缩处理再存储; 不要将上传文件的绝对路径返回给客户端; 将上传的文件进行随机命名和重命名; 更新补丁,避免使用有文件解析漏洞的web服务器; 禁止PUT上传,禁用WebDAV; 安装杀毒软件对上传目录的文件进行实时监控。 |
|
|
备注 |
PHP版本<5.3.4 , 几乎所有的file函数都受NULL截断影响! |
|
6.2、路径遍历
|
简要描述 |
应用程序包含文件资源是非常常见的事情,但也因此很容易引入漏洞。 |
|
|
解决方案 |
当检测包含字符”/”或”\”字符时拒绝处理该请求。 尽可能不使用用户输入数据作为文件系统调用的入参; 使用索引而不是用户提供的文件名的方式来存取文件,比如用户提交5,代表foo这个文件,而不是让用户提交foo这个文件名(参考附录11.2.2); 保证用户的输入不能控制一个完整路径中的任何一部分。 |
|
|
备注 |
|
|
6.3、临时文件
|
简要描述 |
应用程序偶尔会产生临时文件到文件系统,如果这些文件暴露给未授权的用户,就有可能导致信息泄漏。 |
|
|
解决方案 |
保证临时文件不允许被未认证用户访问; 执行自动化脚本对临时文件进行定时清理; 如果可能,尽量将临时文件置放在web目录外,防止浏览器强制访问攻击; 对临时文件进行随机化命名,降低浏览器暴力遍历的攻击概率。 |
|
|
备注 |
|
|
6.4、旧的无效文件
|
简要描述 |
系统管理人员和开发人员使用编辑器或其它工具后可能会产生一些临时文件,如果这些文件的扩展名或者权限被改变了,就有可能被攻击者读取到其中的数据。 |
|
|
解决方案 |
在开发中防止应用程序保留文件的备份; 定期检查web目录下的所有文件是不是都是必须的; 保证应用程序产生的临时文件无法通过浏览器访问。 |
|
|
备注 |
|
|
如格式显示不正确,建议使用chrome浏览器
Web安全开发指南--文件系统的更多相关文章
- axis1,xfire,jUnit 测试案列+开Web Service开发指南+axis1.jar下载 代码
axis1,xfire,jUnit 测试案列+Web Service开发指南(中).pdf+axis1.jar下载 代码 项目和资源文档+jar 下载:http://download.csdn. ...
- 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)
版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...
- Web安全测试指南--文件系统
上传: 编号 Web_FileSys_01 用例名称 上传功能测试 用例描述 测试上传功能是否对上传的文件类型做限制. 严重级别 高 前置条件 1. 目标web应用可访问,业务正常运行. 2. 目 ...
- Web安全开发指南--会话管理
1.会话管理 3.1.会话管理安全规则 1 避免在URL携带session id. 2 使用SSL加密通道来传输cookie. 3 避免在错误信息和调试日志中记录session id. 4 使用框架自 ...
- Web安全开发指南--异常错误处理与日志审计
1.异常错误处理与日志审计 5.1.日志审计系统安全规则 1 日志系统能够记录特定事件的执行结果(比如 成功或失败). 确保日志系统包含如下重要日志信息: 1. 日志发生的时间: 2. 事件的严重 ...
- Web安全开发指南--数据验证
1.数据验证 4.1.输入数据验证安全规则 1 数据验证必须放在服务器端进行. 2 至少对输入数据的数据类型.数据范围和数据长度进行验证. 3 所有来自不可信数据源(比如网络.用户命令.数据库和文件系 ...
- web安全开发指南--权限管理
2.1 访问控制安全规则 1 访问控制必须只能在服务器端执行. 2 只通过session来判定用户的真实身份,避免使用其它数据域的参数(比如来自cookie.hidden域 ...
- web安全开发指南--认证
1.认证 1.1. 认证和密码管理安全规则 1 认证控制必须只能在服务器端执行. 2 除了指定为公开的资源,对所有其它资源的访问都必须先经过认证. 3 为所有关键凭证实施防"暴力 ...
- Lightning Web Components 开发指南(二)
Lightning Web Components 是自定义元素使用html 以及现代javascript进行构建. Lightning Web Components UI 框架使用web compon ...
随机推荐
- ftp,nfs和samba的区别
先从名字上进行理解: 1. FTP(文件传输协议) 2. NFS(网络文件系统) 3. samba 即smb(服务信息块)协议 1 其中FTP 是TCP/IP协议栈所提供的一种子协议,该子协议具体可以 ...
- Maven核心概念
一.坐标 在平面几何中,坐标(x,y)可以标识平面中唯一的一个点.在maven中,坐标是为了定位一个唯一确定的jar包.Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范:拥有了 ...
- Linux软件管理器(如何使用软件管理器来管理软件)
我们的Linux系统大部分都是某个Linux厂商的系统,所以这些厂商可以编译好一些软件来提供用户下载,用户下载完了之后就可以直接安装,从而省去了编译源码及其过程中的各种问题.这时我们就可以使用相应的软 ...
- Linux命令之dig命令实例讲解
1.查看域名的A记录 # dig yahoo.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<> ...
- Base64的好处
1. 昨天的<MIME笔记>中提到,MIME主要使用两种编码转换方式----Quoted-printable和Base64----将8位的非英语字符转化为7位的ASCII字符. 虽然这样的 ...
- c++ 容器学习 理论
[转载]http://blog.csdn.net/acosoft/article/details/4395468 在面向对象的语言中,大多引入了容器的概念.那么 什么 是 容器?实质上就是一组相同类型 ...
- Python教程(一)Python简介
Python就为我们提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量内容,被形象地称作“内置电池(batteries included)”.用Python开发,许多功能不必从零 ...
- CentOS下Redis安装与配置
本文详细介绍redis单机单实例安装与配置,服务及开机自启动.如有不对的地方,欢迎大家拍砖o(∩_∩)o (以下配置基于CentOS release 6.5 Final, redis版本3.0.2 [ ...
- 【SQL SERVER】触发器(二)
前言:上面一片文章整理了触发器的基础知识点,下面我们看看如何使用触发器以及insert和delete表: 这里我们补充一下触发器的缺点: 性能较低.我们在运行触发器时,系统处理的大部分时间花费在参照其 ...
- maven的认识
>>>>>>>>>> 安装完成后,设置为环境变量 命令行输入,如下图片就表明成功 >>>>>>>& ...