Warum ist char[] für die Speicherung von Passwörtern in Java besser als String?
Hallo zusammen! Ich bin ein Java-Anfänger und schreibe eine kleine Benutzerauthentifizierungs-App. Dabei bin ich auf ein Sicherheitsproblem bei der Arbeit mit Passwörtern gestoßen.
Normalerweise verwende ich String für die Passworteingabe von der Konsole oder aus einem JPasswordField. Zum Beispiel:
```java
Console console = System.console();
String password = new String(console.readPassword("Geben Sie Ihr Passwort ein: "));
```
Aber neulich habe ich in einem Forum gelesen, dass die Verwendung von String für Passwörter eine schlechte Praxis ist und man besser char[] verwenden sollte. Ehrlich gesagt verstehe ich den Unterschied nicht ganz. String ist doch auch nur eine Zeichenfolge, genau wie ein char-Array. Warum gilt char[] als sicherer?
Ich verstehe, dass String unveränderlich (immutable) ist, aber ist das ein Problem? Nach der Verwendung des Passworts kann ich der Variablen einfach null zuweisen, und der Garbage Collector wird die Zeichenkette früher oder später aus dem Speicher entfernen.
Kann mir jemand einfach erklären, wo der Haken liegt? Und wie organisiert man die Arbeit mit Passwörtern in Java richtig? Ich wäre für jede Erklärung dankbar.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen