Sobes.tech
Middle

De ce char[] este preferat față de String pentru stocarea parolei?

sobes.tech AI

Răspuns de la AI

Obiectele de tip String sunt imutabile. Aceasta înseamnă că, odată creată o șir, conținutul acesteia nu poate fi modificat. Dacă salvați parola într-un String, aceasta va rămâne în memorie până când colectorul de gunoi va elimina acest obiect. În acest timp, un atacator poate avea acces la memorie și poate citi parola.

Array-urile char[] pot fi modificate. După utilizarea parolei stocate într-un char[], puteți suprascrie explicit elementele array-ului, de exemplu, cu caractere nule. Acest lucru asigură că parola este eliminată din memorie imediat ce nu mai este necesară, reducând semnificativ riscul de scurgere.

În plus, lucrul cu șiruri de caractere implică riscul de a crea copii suplimentare în pool-ul de string-uri, ceea ce crește timpul de păstrare a parolei în memorie.

// Exemplu de stocare a parolei într-un char[] și de curățare
char[] password = {'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};

// Utilizarea parolei (de exemplu, pentru autentificare)
// ...

// Curățarea array-ului după utilizare
java.util.Arrays.fill(password, ' ');

// Acum parola a fost eliminată din memorie