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 ...
随机推荐
- css预处理scss环境配置
css 预处理器 CSS 预处理器用一种专门的编程语言,进行 Web css编码,然后再编译成正常的 CSS 文件,以供项目使用:说简单点就是在某个环境下写css 可以写变量.表达式.嵌套等,在通过该 ...
- Jmeter命令行选项
示例:jmeter.bat -n -j %tmp%\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%%time:~ ...
- Linux文件访问流程及磁盘inode和block总结
Linux文件访问流程 inode是文件的唯一标识,文件名和inode的对应关系存放在上一级目录的block中:inode里有指向文件block的指针和文件的属性,从而通过block获得文件数据. 磁 ...
- 5、SourceTree使用git
1.拉取分支 拉去分支请参见:3.SourceTree通过PUTTY连接GitLab 最后内容 注:如果拉取后看不见master,请在gitLab页面的master上新建一个文件即可. 2.创建一个分 ...
- CentOS系统yum源配置修改、yum安装软件包源码包出错解决办法apt.sw.be couldn't connect to host
yum安装包时报错: Could not retrieve mirrorlist http://mirrorlist.repoforge.org/el6/mirrors-rpmforge error ...
- HDU 3533 Escape(BFS+预处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3533 题目大意:给你一张n* m的地图,人在起点在(0,0)要到达终点(n,m)有k(k<=10 ...
- unittest单元测试
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- Roman to Integer & Integer to Roman
题目: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...
- 用 Python实现一个ftp+CRT(不用ftplib)
转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5590004.html 本来最初的想法是实现一个ftp服务器,用来实现用户的登陆注册和文件的断点上传下载等,结果做着 ...
- bzoj 1855 dp + 单调队列优化
思路:很容易写出dp方程,很容易看出能用单调队列优化.. #include<bits/stdc++.h> #define LL long long #define fi first #de ...