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可能无效或不存在,但我不知道如何避免这个错误。
在您的情况下,问题在于传递给
fileName
函数的 zipping
是根据客户端提供的参数在控制器方法内部构造的。这被认为是 I/O 路径注入安全漏洞。 有一个专门的 SonarQube 规则负责此操作。
要解决此问题,我建议您转到“如何修复它”部分并遵循 SonarQube 团队的建议。对于每条规则,他们都有一个如何修复它的示例。希望有帮助。