如何修复此发现错误新文件中的潜在路径遍历(filePath)

时间:2017-08-09 05:43:38

标签: java security findbugs

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));
}

1 个答案:

答案 0 :(得分:0)

修复此问题的方法之一是不使用变量输入来访问服务器上的文件。来自https://cwe.mitre.org/data/definitions/73.html

的建议之一
  

当文件名集受到限制或已知时,请从   一组固定输入值(例如数字ID)到实际值   文件名,并拒绝所有其他输入。例如,ID 1可以映射到   “ inbox.txt”和ID 2可以映射到“ profile.txt”。诸如   ESAPI AccessReferenceMap提供了此功能。

SonarQube仍将您的代码检测为无效代码,因为即使您使用FilenameUtils.getName(),您的代码仍会将用户提供的变量用作文件路径的一部分。