在下面的代码片段中运行 findbugs 后,我收到了“方法 java.io.File 读取其位置由用户输入指定的文件”消息的警告。
public void removeFile(String warfileName){
File warFile = new File(homePath + "/samples/" + warFileName + ".war");
.....
}
解决此安全问题的最佳方法是什么?
最佳答案
正如@Jeet 所指出的,页面中描述了一种解决方案。基本上,它建议使用一个框架来“规范化”用户输入,即:
File file = new File("resources/images/", image); //Weak point
File file = new File("resources/images/", FilenameUtils.getName(image)); //Fix
此解决方案的问题在于它引入了对您的项目(对 Apache Commons)的依赖。
因此,您可以尝试使用 java 7 Files
和 Path
,而不是使用 FilenameUtils.getName。 Path#getFileName() 可能有助于修复漏洞。
关于java - 如何修复 'Potential Path Traversal (File Read)' 的 Findbugs 安全警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38119783/