Sobes.tech
Middle

Warum ist char[] gegenüber String zur Speicherung eines Passworts vorzuziehen?

sobes.tech KI

Antwort von AI

Objekte vom Typ String sind unveränderlich. Das bedeutet, dass der Inhalt eines Strings nach der Erstellung nicht geändert werden kann. Wenn Sie das Passwort in einem String speichern, verbleibt es im Speicher, bis der Garbage Collector dieses Objekt entfernt. Während dieser Zeit könnte ein Angreifer auf den Speicher zugreifen und das Passwort lesen.

Arrays vom Typ char[] sind veränderbar. Nach der Verwendung des in einem char[] gespeicherten Passworts können Sie die Elemente des Arrays explizit überschreiben, zum Beispiel mit Nullzeichen. Dies stellt sicher, dass das Passwort sofort nach Beendigung der Nutzung aus dem Speicher entfernt wird, was das Risiko eines Lecks erheblich reduziert.

Außerdem besteht beim Arbeiten mit Strings das Risiko, zusätzliche Kopien im String-Pool zu erstellen, was die Verweildauer des Passworts im Speicher erhöht.

// Beispiel: Passwort in einem char[] speichern und löschen
char[] password = {'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};

// Verwendung des Passworts (z.B. für Authentifizierung)
// ...

// Löschen des Arrays nach der Verwendung
java.util.Arrays.fill(password, ' ');

// Das Passwort ist jetzt aus dem Speicher entfernt