如何修复潜在路径遍历(文件读取)&{39;

时间:2016-06-30 09:57:58

标签: java

我通过'方法获得了警告。方法java.io.File读取一个位置由用户输入'指定的文件。在下面的代码片段中运行findbugs后的消息。

public void removeFile(String warfileName){
    File warFile = new File(homePath + "/samples/" + warFileName + ".war");
.....
}

解决此安全问题的最佳方法是什么?

3 个答案:

答案 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 FilesPath。可能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);