Neden char[] şifreler için Dize Java tercih edilir?
Salıncak, parola alanı getText()
(döner String
) her zamanki yöntemi yerine getPassword()
(döner char[]
) bir yöntemi vardır. Benzer şekilde, String
şifreleri işlemek için kullanmak için bir öneri ile karşılaştım.
Neden String
şifreler geldiğinde güvenlik için bir tehdit teşkil ediyor mu?
char[]
kullanmak için rahatsız edici bir his.
CEVAP
Dizeleri değişmez. String oluşturduktan sonra demek ki, eğer başka bir işlem bellek dökümü, GC devreye girmeden veri kurtulmak (kenara yansıması) yok.
Bir dizi, açıkça wipe data sonra işin bitti bu: üzerine yaz dizisi olan sana bir şey gibi, ve şifre olmayacak yerde mevcut sistem bileönceçöp toplama.
Yani evet, buGüvenlik bir endişe - ama kullanma char[]
sadece bileazaltırbir saldırgan için fırsat penceresi, yalnızca saldırı bu tür için.
EDİT: yorumlarda da belirtildiği Gibi, diziler çöp toplayıcı tarafından taşınan bellek veri yolunu şaşırmış kopya bırakacak olması muhtemel. Bu uygulama-özel - GC olduğuna inanıyorumolabilirtüm bellek gider gibi, bu tür bir şey önlemek için temizleyin. Eğer varsa bile, hala hangi sırasında char[]
saldırı bir pencere gibi gerçek karakterler içeren zaman var.
Neden derleyici bir char için varargs ...
Nasıl Dize/ayrıştırma java char dönüşt...
Java ile bir numaralama için bir Dize ...
Nasıl bir dosyanın içeriğini bir Java ...
Neden Java Vector sınıfı eski veya kul...