2016-06-30 2 views
1

Ich bekomme über Warnung mit 'Methode java.io.File liest eine Datei, deren Speicherort durch Benutzereingabe' Nachricht nach dem Ausführen von Findbugs in der unter Code-SnippetSo beheben Sie die Findbugs Sicherheitswarnung für 'Mögliche Pfad Traversal (Datei lesen)'

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

Was wäre der beste Weg, um dieses Sicherheitsrisiko zu beheben?

+2

Überprüfen Sie den folgenden Link. Es gibt eine Erklärung für Findbug-Fehler. http://find-sec-bugs.github.io/bugs.htm – Jeet

Antwort

2

Wie @Jeet darauf hingewiesen hat, ist auf der Seite eine Lösung beschrieben. Grundsätzlich sugests es, einen Rahmen zu verwenden, um „Normalisierung“ die Benutzereingabe, das heißt:

File file = new File("resources/images/", image); //Weak point 
File file = new File("resources/images/", FilenameUtils.getName(image)); //Fix 

Das Problem bei dieser Lösung ist, dass es eine Abhängigkeit zu einem Projekt führt (auf Apache Commons).

Anstatt stattdessen FilenameUtils.getName zu verwenden, könnten Sie versuchen, Java 7 Files und Path zu verwenden. Wahrscheinlich würde Path # getFileName() helfen, die Unerträglichkeit zu beheben.

+0

Die beiden APIs 'File.getName()' und 'Path.getFilename()' werden irgendwann hinzugefügt. Ich kannte beide Methoden nicht. https://github.com/find-sec-bugs/find-sec-bugs/issues/241 – h3xStream

Verwandte Themen