[英]Interning of String.valueOf()
雖然在Java中處理密碼,但我的理解是它們應該始終在char []中處理以允許GC並刪除掛起的引用。
我的問題是,
char[] password = String.valueOf(authentication.getCredentials()).toCharArray();
是否可以實現authentication.getCredentials()的值?
這不是一個實現字符串的問題,使用字符串來存儲密碼的任何安全問題都源於它們在內存中存在的時間量。
使用char數組,您可以在閱讀完內容后擦除內容。 使用String(這是不可變的)你依賴垃圾收集器,這意味着如果有人訪問你的服務器並轉儲內存,可能會有密碼可見。
String.valueOf()
沒有實習字符串。 在運行時實習生字符串的唯一方法是使用password.intern()
。
沒有必要使用
使用char[]
作為密碼。
char[]
允許您在使用后直接清除陣列,縮小攻擊者的時間范圍以轉儲內存並檢索明文密碼。
字符串本身對GC來說並不特別。 實習會對它產生影響,但在常規使用中,您不會遇到任何異常情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.