我有以下代码来获取给定目录和文件名前缀的最新修改文件。 当我运行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;
}
答案 0 :(得分:0)
您必须确保archivesDirectoryPath
不允许访问合理的文件夹。
一种方法是验证指定的文件夹是否位于白名单中。此白名单既可以在您的代码中定义,也可以由&#34; administrator&#34;进行配置。用户。尝试处理不在此列表中的文件夹应该引发异常。
您可以检查文件夹名称中是否使用了/../
,但检查结果文件夹是否属于白名单应该就足够了。