我有两个问题,声纳感到很难过。一行代码中的第一个具有相对路径遍历问题,如下所示:

File f = new File(MY_DIR + filename);


文件名是我从请求中获得的参数。
第二行是关于绝对路径遍历的问题,除了前面没有MY_DIR以外,它看起来完全相同。

我在这些行之后使用一种方法来添加验证检查,该方法可以使用规范路径确保文件位于MY_DIR目录中,因此现在看起来像这样:

...
File rootDirFile = new File(MY_DIR);
        if (validateFileName(rootDirFile, f)) {
...
private static boolean validateFileName(File targetDir, File fileToCheck) throws IOException {
    String targetDirPath = targetDir.getCanonicalPath() + File.separator;
    String pathToCheck = fileToCheck.getCanonicalPath();

    return pathToCheck.startsWith(targetDirPath);
}


但是声纳仍然说我在这两行上有一个漏洞。如何说出我已经找到了解决方案?

最佳答案

根据您的版本,您可以将问题标记为“无法解决”(意味着从5.1开始接受该问题)或“假阳性”(意味着您认为分析引擎是错误的-在5.1之前) )。

10-05 23:21