private static void removeFile(MyClass someValue) {
Path filePath = Paths.get(someValue.getRootFolderPath(), someValue.getRelativePath());
if (!Files.exists(filePath)) {
LOG.warn("File does not exist", filePath.toAbsolutePath().toString());
return;
}
try {
Files.delete(filePath.getFileName());
LOG.debug("File " + someValue.getRelativePath() + " was deleted");
} catch (Exception e) {
String excMessage = "some info";
LOG.warn(excMessage, e);
}
}
< /code>
Sonar sagt: < /p>
Java /nio /Datei /paths.get ( Ljava/lang/string; [ljava/lang/string;) ljava/nio/file/path;
liest eine Datei, deren Speicherort möglicherweise durch Benutzereingabe
< /blockquote>
Ich habe die Methode Normalisierung hinzugefügt, um den Pfad -Traversal -Angriff zu verhindern. < /p>
Path filePath = Paths.get(someValue.getRootFolderPath(), someValue.getRelativePath()).normalize();
< /code>
Aber Sonar sagt mich immer noch über potenzielle Pfadverletzungen. < /p>
mache ich etwas falsch oder es gibt eine bessere Lösung, um solche Angriffe zu verhindern, die Sonar entsprechen? < /p>
upd < /strong>:
haben viele Möglichkeiten zur Lösung dieses Problems ausprobiert, und alle sind durch statische Analyse falsch. < /p>
Verletzlicher Code:
Path filePath = Paths.get(FilenameUtils.getName(someValue.getFileName()));
Path filePath = Paths.get("some/path", FilenameUtils.getName(someValue.getFileName()));
Path filePath = Paths.get("some/path", FilenameUtils.getName(fileName));
Path filePath = Paths.get(FilenameUtils.getName(fileName));
File file = new File(someValue.getRootFolderPath(), someValue.getRelativePath());
File file = new File(someValue.getRootFolderPath(), FilenameUtils.getName(someValue.getFileName()));
File file = new File(FilenameUtils.getPath(someValue.getRootFolderPath()), FilenameUtils.getName(someValue.getFileName()));
File file = new File("some/path", FilenameUtils.getName(fileName));
File file = new File(FilenameUtils.getName(fileName));
File file = new File(FilenameUtils.getName("bla-bla-bla"));
Ich habe eine Methode zum Löschen von Dateien. Ich benutze Sonarqube für die statische Analyse meines Code[code]private static void removeFile(MyClass someValue) { Path filePath = Paths.get(someValue.getRootFolderPath(), someValue.getRelativePath());
if (!Files.exists(filePath)) { LOG.warn("File does not exist", filePath.toAbsolutePath().toString()); return; }
Ich befinde mich im Selbstlernkurs CMU 15213 und absolviere derzeit das Attack Lab. Was mich verwirrt, ist, dass die an dieses Labor angehängte ausführbare Datei, hex2raw, nicht auf meinem Computer...
Ich versuche, diesen Algorithmus in C#zu implementieren, aber ich habe im Moment sehr inkonsistente Ergebnisse, und ich kann nicht herausfinden, warum.public static IEnumerable...
Ich stoße auf ein Problem, wenn ich versuche, die SonarQube-Analyse für mein Projekt mit dem SonarQube Maven-Plugin auszuführen. Die Fehlermeldung weist darauf hin, dass aufgrund der Java...
Eine Alternative zur Protokollierung.Config.DictConfig (config)? Ich kann das Sonarqube -Qualitätstor aufgrund des folgenden Sonarqube -Fehlers nicht umgehen: logging.config.dictconfig (config):...