Sobes.tech
Middle

Miks on char[] eelistatum kui Stringi parooli salvestamisel?

sobes.tech AI

Vastus AI-lt

String objekti ir nemainīgi. Tas nozīmē, ka, tiklīdz tiek izveidots virknējums, tā saturs nevar tikt mainīts. Ja saglabājat paroli String, tā paliks atmiņā līdz brīdim, kad atkritumu savācējs to izdzēsīs. Šajā laikā uzbrucējs var piekļūt atmiņai un nolasīt paroli.

char[] masīvi ir modifikējami. Pēc paroles izmantošanas, kas saglabāta char[], jūs varat tieši pārrakstīt masīva elementus, piemēram, ar nulles rakstzīmēm. Tas nodrošina, ka parole tiek izdzēsta no atmiņas nekavējoties, kad tā vairs nav nepieciešama, būtiski samazinot noplūdes risku.

Turklāt, strādājot ar virknes, pastāv risks radīt papildu kopijas virkņu baseinā (string pool), kas arī palielina paroles uzturēšanās laiku atmiņā.

// Paroles glabāšanas piemērs `char[]` un tās tīrīšana
char[] password = {'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};

// Paroles izmantošana (piemēram, autentifikācijai)
// ...

// Pēc izmantošanas tīrīt masīvu
java.util.Arrays.fill(password, ' ');

// Tagad parole ir izdzēsta no atmiņas