Sobes.tech
Middle

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