Sonarqube 如何修复不从用户控制的数据构建路径

问题描述 投票:0回答:2

下面的代码在sonarqueb中给出了漏洞问题“更改此代码以不从用户控制的数据构造路径”

BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file, false));

我在下面尝试过,但不起作用

if (file.exists() && file.isFile()) {
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file, false));
}

还有

if(Files.exists(file.toPath()) && Files.isExecutable(file.toPath())) {
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file, false));
}

在创建新的缓冲流之前我缺少验证什么?

sonarqube java-11
2个回答
0
投票

回答问题永远不会太晚。 分析您的问题,我相信您必须在每种操作本身之前在文件上传及其名称中进行验证和清理。

OWASP - Cheat Sheet Series 提供了一个很好的指南,它解释了软件开发中被认为危险的所有内容以及关于 文件上传


0
投票

使用 apache.commons.io.FilenameUtils 解决了这个问题,如下所示

if(!FilenameUtils.getExtension(file.getOriginalFilename()).contains("exe")) {
//add allowed file extensions or not allowed file extensions like above        
}
© www.soinside.com 2019 - 2024. All rights reserved.