Gibt es Standard-Bibliothek Methoden, die Pfade, die spezielle Traversal-Sequenzen, wie ../
und alle anderen verschachtelten Formen der Aufwärts Verzeichnis Traversal, spezielle Dateipfad-API-Eingang zu filtern filtern können von nach oben eines gegebenen "root" Pfades?Filterung nach oben Pfad Traversal in Java (oder Scala)
Ich habe eine Klasse, die einen Stammordner Wert Member und eine Member-Funktion enthält, die Pfade zum rekursiven Löschen akzeptiert. Mein Ziel ist es, dieses API sicher zu machen, indem es jeden ihm zur Verfügung gestellten Eingabepfad ausfiltert - was zu einem Pfad aufwärts des Stammordnerwerts führen würde. Das Ziel ist, dass diese Klasse großzügig verwendet wird, um Dateien unter dem Stammpfad zu löschen, aber sie würde niemals etwas über den Stammpfad hinaus berühren.
Dies ist ähnlich der breiteren path traversal attack.
Methoden, die zu restriktiv sind (zB zu falsch negativen Ergebnissen führen können), können für meinen speziellen Anwendungsfall in Ordnung sein, wenn dies die Dinge vereinfacht, und meine aktuellen Bedürfnisse sind für Dateisystempfade nicht webbasiert (obwohl ein Web Modul für den äquivalenten Sake könnte hier theoretisch funktionieren).
Wie werden Sie diese Pfade auf die Bahn ausgesetzt wird? Im Allgemeinen können Frameworks wie Spring diese Angriffe ziemlich gut mildern, sodass Sie selten eine andere Sicherheitsschicht hinzufügen müssen. – Makoto
Ich bin nicht. Dies ist für eine Backend-Devops-API, die einige Dateilöschungslogik enthält, und es muss vermieden werden, Dateien außerhalb eines gegebenen Stammordners zu löschen, ohne die Hilfe von Betriebssystem-Dateisystemberechtigungen. – matanster
Über welche Wege reden wir hier? 'java.nio.file.Path' verfügt über Methoden, um relative Dateipfade auf einer Basis zu konsolidieren. – biziclop