强化安全发现 - CWE 22 Path Manipulation

时间:2017-03-02 16:16:49

标签: java fortify

我有以下代码来获取给定目录和文件名前缀的最新修改文件。 当我运行HPE强化分析时,它给了我"路径操作"发现。 你能指导我如何解决这个问题吗? 访问Web应用程序的文件系统的最佳和最安全的方法是什么?

public static File getLatestFilefromDirWithFileName(String archivesDirectoryPath, String fileStartWith){    
    File archivesDirectory = new File(archivesDirectoryPath);

    FilenameFilter textFilter = new FilenameFilter() {
        public boolean accept(File dir, String name) {
            if (name.startsWith(fileStartWith)) {
                return true;
            } else {
                return false;
            }
        }
    };

    File[] filesInArchiveDir = archivesDirectory.listFiles(textFilter);
    if (filesInArchiveDir == null || filesInArchiveDir.length == 0) {
        return null;
    }

    File lastModifiedFile = filesInArchiveDir[0];
    for (int i = 1; i < filesInArchiveDir.length; i++) {
       if (lastModifiedFile.lastModified() < filesInArchiveDir[i].lastModified()) {
           lastModifiedFile = filesInArchiveDir[i];
       }
    }

    return lastModifiedFile;
}

1 个答案:

答案 0 :(得分:0)

您必须确保archivesDirectoryPath不允许访问合理的文件夹。

一种方法是验证指定的文件夹是否位于白名单中。此白名单既可以在您的代码中定义,也可以由&#34; administrator&#34;进行配置。用户。尝试处理不在此列表中的文件夹应该引发异常。

您可以检查文件夹名称中是否使用了/../,但检查结果文件夹是否属于白名单应该就足够了。