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));
}
修复它的方法之一是不使用变量输入来访问服务器上的文件。其中一个建议来自这里https://cwe.mitre.org/data/definitions/73.html
当文件名集受限或已知时,创建从一组固定输入值(如数字ID)到实际文件名的映射,并拒绝所有其他输入。例如,ID 1可以映射到“inbox.txt”,ID 2可以映射到“profile.txt”。 ESAPI AccessReferenceMap等功能提供此功能。
qazxsw poi仍然检测到你的代码无效,因为即使你使用qazxsw poi,你的代码仍然使用用户提供的变量作为文件路径的一部分。