Sobes.tech
Middle

Kāpēc char[] ir vēlams, nevis String paroles glabāšanai?

sobes.tech AI

Atbilde no AI

String objekti ir ir neizmaināmi. Tas nozīmē, ka, tikko ir 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 maināmi. 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 uzreiz pēc tam, 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