我们经常会开发了一个下载功能,具体实现就是后台实现一个下载方法,接收一个带有路径的文件名参数,再通过流将对应的文件返回给客户端。但是这种方式潜在一个安全漏洞——通过修改这个文件名参数的值,可以下载操作系统中当前账号有权访问的任意文件。极有可能造成操作系统内核文件被修改,操作系统密码泄露,web应用文件被修改,WEB应用挂马等多种安全事件。
如何防止下载任意文件呢?
一、限制下载文件的扩展名
String fileName= request.getParameter("fileName");
if(!fileName.endWith(".doc")){
return null;
}
二、限制下载文件所在的路径
String filePath= fileName.substring(0,fileName.lastIndexOf('\\'));
if(!filePath.startWith("/download")){
return null;
}
三、防止目录回溯
if(filePath.contains("\\..")){
return null;
}
四、动态校验码
根据待下载文件,生成MD5摘要或者其他动态验证码算法并将动态校验码融合到下载链接中,客户端浏览器提交下载请求时,再次校验动态验证码。
String md5Code=MD5(file);
http://xxx/download/?fileName=/download/a.doc&code=dgaq2342rjwioafqwewf
String requestCode = request.getParameter("code");
if(code.equals(md5Code)){
download();
}
分享到:
相关推荐
php168下载任意文件 内部用的。。现在共享上来 拿积分的,点击查看代码后 等上三秒钟 如果有漏洞就可以看到对方的源代码了。。。
jQuery是一个快速、简洁的JavaScript框架,丰富的Javascript代码库,在其1.7.2版本的sys_dia_data_down模块存在任意文件读取漏洞,攻击者可通过前台读取任意文件。
用友NC任意文件上传漏洞利用工具,用友NC6.5的某个页面,存在任意文件上传漏洞。漏洞成因在于上传文件处未作类型限制,未经身份验证的攻击者可通过向目标系统发送特制数据包来利用此漏洞,成功利用此漏洞的远程攻击...
通达OA漏洞合集
Adminer≤4.6.2 任意件读取漏洞0x01 前SQLite、PostgreSQL 等众多主流数据库,类似于 phpMyAdmin 的 MySQL 管理客
帆软 V9 任意文件覆盖文件上传漏洞描述帆软 V9 存在任意文件覆盖,导致攻击者可以任意文件上传漏洞影响帆软 V9漏洞复现。
银澎云计算 好视通视频会议系统 任意文件下载漏洞描述银澎云计算 好视通视频会议系统 存在任意文件下载,攻击者可以通过漏洞获取敏感信息漏洞影响银澎云计算 好视通视
泛微OA xmlrpcServlet接口任意文件读取漏洞(CNVD-2022-43245),可以指定文件路径进行读取,并提供检测方案
帆软 V9 任意文件覆盖文件上传漏洞描述帆软 V9 存在任意文件覆盖,导致攻击者可以任意文件上传漏洞影响帆软 V9漏洞复现。
漏洞简介:BageCMS是一套基于PHP和MySQL的跨平台的内容管理系统(CMS)。管理功能过滤不严导致任意文件读取漏洞。##漏洞分析在文件 www\prot
漏洞简介:OurPHP(傲派建站系统)是一款使用PHP语言开发的网站内容管理系统,开发商为哈尔滨伟成科技有限公司。OurPHP 1.8版本存在任意文件读取漏洞,
HIKVISION 视频编码设备接入网关 任意文件下载漏洞描述海康威视视频接入网关系统在页面/serverLog/downFile.php的参数fileName
1. 读取程序源代码(如密码配置文件) 2. 读取程序配置文件(如数据库连接文件) 5. 读取中间件配置文件(weblogic/tomcat等密码文件,apac
文件下载功能存在漏洞,需要对待下载的文件路径进行判断否则可能下载任意文件
folder和title参数直接从 get方法获取,然后直接进行拼接构成file文件的路径,没有经过任何过滤,也没有限制文件扩展名,导致任意文件读取漏洞漏洞证明
漏洞简介:易优cms企业建站系统是由php+mysql开发的一套专门用于中小企业网站建设的开源cms。可以用来快速建设一个企业网站( PC,手机,微信都可以访问
【基础篇】第08篇:PHP代码审计笔记--任意文件下载漏洞1
若依(RuoYi)管理系统 后台任意文件读取漏洞描述若依管理系统是基于SpringBoot的权限管理系统,登录后台后可以读取服务器上的任意文件漏洞影响app=