我通过'方法获得了警告。方法java.io.File读取一个位置由用户输入'指定的文件。在下面的代码片段中运行findbugs后的消息。
public void removeFile(String warfileName){
File warFile = new File(homePath + "/samples/" + warFileName + ".war");
.....
}
解决此安全问题的最佳方法是什么?
答案 0 :(得分:5)
正如@Jeet指出的那样,页面中描述了一个解决方案。基本上,它使用框架来“规范化”用户输入,即:
File file = new File("resources/images/", image); //Weak point
File file = new File("resources/images/", FilenameUtils.getName(image)); //Fix
此解决方案的问题在于它为您的项目引入了一个依赖项(对于Apache Commons)。
因此,使用FilenameUtils.getName,您可以尝试使用java 7 Files
和Path
。可能Path#getFileName()有助于修复vunerability。
答案 1 :(得分:0)
您可以使用
File file = new File(FilenameUtils.getName(image));
答案 2 :(得分:0)
否则路径
Path target = new File("/home/jt/",
FilenameUtils.getName(getName())).toPath();
Path source = new File("/home/jt/new/",
FilenameUtils.getName(getName())).toPath();
Files.move(source, target, StandardCopyOption.REPLACE_EXISTING);