Middle
Şifreyi saklamak için neden String yerine char[] tercih edilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
String nesneleri değiştirilemez. Bu, bir dize oluşturulduktan sonra içeriğinin değiştirilemeyeceği anlamına gelir. Parolayı bir String içinde saklarsanız, çöp toplayıcı bu nesneyi silene kadar bellekte kalır. Bu süre zarfında, bir saldırgan belleğe erişip parolayı okuyabilir.
char[] dizileri değiştirilebilir. char[] içinde saklanan parola kullanıldıktan sonra, dizinin elemanlarını açıkça üzerine yazabilirsiniz, örneğin null karakterlerle. Bu, parolanın kullanılmaz hale gelir gelmez bellekten silinmesini sağlar ve böylece sızıntı riski önemli ölçüde azalır.
Ayrıca, dizelerle çalışırken, string havuzunda ek kopyalar oluşturma riski vardır, bu da parolanın bellekte kalma süresini artırır.
// Parolayı `char[]` olarak saklama ve temizleme örneği
char[] password = {'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};
// Parolanın kullanımı (örneğin, kimlik doğrulama için)
// ...
// Kullanımdan sonra diziyi temizleme
java.util.Arrays.fill(password, ' ');
// Artık parola bellekten silindi