修复路径遍历或任意文件下载漏洞

一、问题描述

        路径遍历是指应用程序接收了未经合理校验的用户参数用于进行与文件读取查看相关操作,而该参数包含了特殊的字符(例如“..”和“/”),使用了这类特殊字符可以摆脱受保护的限制,越权访问一些受保护的文件、目录或者覆盖敏感数据。

        路径遍历利用应用程序的特殊符号(“~/”,“../”)可以进行目录回溯,从而使攻击者越权访问或者覆盖敏感数据,如网站的配置文件、系统的核心文件等。

二、问题避免     

(1)程序对非受信的用户输入数据净化,对网站用户提交过来的文件名进行硬编码或者统一编码,过滤非法字符。

(2)对文件后缀进行白名单控制,对包含了恶意的符号或者空字节进行拒绝。

(3)合理配置 web 服务器的目录权限。

三、修复方法

        1、对需要下载的文件,存储路径信息的数据库,后台接口返回对应的id和文件名称,提供的下载接口入参为文件id,根据前端传来的id查数据库获取文件路径进行下载。而不是直接将文件路径输出在前端页面

        2、对于根据文件名称下载的接口,对入参进行特殊符号过滤,可使用以下方法:

        

public static String filter(String data) {
        Pattern pattern = Pattern.compile("[\\s\\\\/:\\*\\?\\\"<>\\|]");
    	Matcher matcher = pattern.matcher(data);
    	data = matcher.replaceAll("");
    	return data;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值