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 ...
随机推荐
- ECMAScript 6 Promise 对象
一.Promise的含义 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消息. 1. ...
- python爬取网易云音乐歌单音乐
在网易云音乐中第一页歌单的url:http://music.163.com/#/discover/playlist/ 依次第二页:http://music.163.com/#/discover/pla ...
- 字节对齐&&sizeof
转:http://blog.chinaunix.net/uid-722885-id-124878.html 1. sizeof应用在结构上的情况 请看下面的结构: struct MyStruct { ...
- gtk+学习笔记(三)
gtk感觉函数好多,需要记好多函数,还是多练习,多总结,今天写了一个登陆窗口,很简单,主要是为了加深对这些东西的记忆,直接贴代码 #include<gtk/gtk.h> static Gt ...
- Android第一篇
1. 网上下载最新版SDK,里面就有一个集成ADT的Eclipse,可以直接用. 2. 最新版SDK会在layout文件夹下有fregment.xml和activity.xml两个布局文件,如果像我这 ...
- JQuery中$.ajax()方法参数详解 ASP.NET jquery ajax传递参数
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...
- codeforces-727A
题目连接:http://codeforces.com/contest/727/problem/A A. Transformation: from A to B time limit per test ...
- asp.net core结合Gitlab-CI实现自动化部署
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言 在之前的文章中写过k8s+Jenkins+GitLab-自动化部署asp.net core项目 的topic,这次讲解一 ...
- poj1789(prim)
prim和kruskal都是求解最小生成树的算法.这道题题意就是有N个字符串就是N个节点,而字符串之间的距离就是节点边的长度,求其最小生成树的边权和. 由于是第一次用prim,所以在求安全边的时候采用 ...
- 学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
如果你是一个生活在2003年的程序员,却不了解字符.字符集.编码和Unicode这些基础知识.那你可要小心了,要是被我抓到你,我会让你在潜水艇里剥六个月洋葱来惩罚你. 这个邪恶的恐吓是Joel Spo ...