Miért előnyösebb a char[] a String-nél a jelszó tárolásához?
sobes.tech MI
Válasz az MI-től
A String objektumok változatlanok. Ez azt jelenti, hogy egy string létrehozása után annak tartalma nem módosítható. Ha a jelszót String-ként tárolja, az a memóriaban marad, amíg a szemétgyűjtő nem távolítja el ezt a objektumot. Ez idő alatt egy támadó hozzáférhet a memóriához és olvashatja a jelszót.
A char[] tömbök módosíthatók. A char[]-ban tárolt jelszó használata után explicit módon felülírhatja a tömb elemeit, például null karakterekkel. Ez biztosítja, hogy a jelszó azonnal törlődjön a memóriából, amint már nincs rá szükség, jelentősen csökkentve a szivárgás kockázatát.
Ezenkívül, a stringekkel való munka során fennáll a kockázata annak, hogy további másolatokat hozunk létre a string poolban, ami szintén növeli a jelszó memóriában tartózkodási idejét.
// Példa a jelszó char[]-ként való tárolására és törlésére
char[] password = {'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};
// A jelszó használata (pl. hitelesítéshez)
// ...
// A tömb törlése használat után
java.util.Arrays.fill(password, ' ');
// Most a jelszó törlődött a memóriából