更改代码以不从用户控制的数据构造路径

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

SonarQube linter 显示以下代码的此错误

Change this code to not construct the path from user-controller data

public static File zipping(List<File> files, String fileName){
    try (var fos= new FileOutputStream(fileName))
    {
    }  
}
@GetMapping(value="",produces="application/zip")
public ResponseEntity<FileSystemResource> gen(@RequestParam String version, @RequestParam String type) {
List<Files> files = service.getFiles(version,type);
String fileName=type+version+".zip";
var zipFile=zipping(files,fileName);

}

我的想法:我知道传递给函数的zipFileName可能无效或不存在,但我不知道如何避免这个错误。

java sonarqube refactoring
1个回答
0
投票

在您的情况下,问题在于传递给

fileName
函数的
zipping
是根据客户端提供的参数在控制器方法内部构造的。这被认为是 I/O 路径注入安全漏洞。 有一个专门的 SonarQube 规则负责此操作

要解决此问题,我建议您转到“如何修复它”部分并遵循 SonarQube 团队的建议。对于每条规则,他们都有一个如何修复它的示例。希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.