public void createFile(String filePath) {
File file = new File(filePath);
}
change to ====>
public void createFile(String filePath) {
File file = new File(FilenameUtils.getFullPath(pathName),
FilenameUtils.getName(pathName));
}
但它仍然有潜在的路径遍历错误,如何修复这个发现错误?谢谢。
硬编码没问题,但不符合我的要求。
public void createFile(String filePath) {
File file = new File("resource/image/",
FilenameUtils.getName(pathName));
}
答案 0 :(得分:0)
修复此问题的方法之一是不使用变量输入来访问服务器上的文件。来自https://cwe.mitre.org/data/definitions/73.html
的建议之一当文件名集受到限制或已知时,请从 一组固定输入值(例如数字ID)到实际值 文件名,并拒绝所有其他输入。例如,ID 1可以映射到 “ inbox.txt”和ID 2可以映射到“ profile.txt”。诸如 ESAPI AccessReferenceMap提供了此功能。
SonarQube
仍将您的代码检测为无效代码,因为即使您使用FilenameUtils.getName()
,您的代码仍会将用户提供的变量用作文件路径的一部分。