为什么char[]优先于字符串的密码?| Java Debug 笔记

本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看活动链接

提问:为什么char[]优先于字符串的密码?

在 Swing 中,密码字段有一个 (返回) 方法,而不是通常的 (返回) 方法。同样,我遇到一个建议,不要用于处理密码。getPassword()char[]getText()StringString

为什么在密码方面对安全构成威胁?使用时感觉不方便。Stringchar[]

高分回答:

字符串是不可改变的。这意味着,一旦你创建了,如果另一个过程可以转储内存,没有办法(除了反射),你可以摆脱数据之前,垃圾收集开始。String

使用数组,您可以在完成数据后明确擦除数据。您可以用任何您喜欢的东西覆盖阵列,即使在垃圾收集之前,密码也不会出现在系统中的任何地方。

所以,是的,这是一个安全问题 – 但即使使用只减少了攻击者的机会窗口,它只针对这种特定类型的攻击。char[]

如评论所述,垃圾收集器移动的阵列可能会在内存中留下数据的杂散副本。我相信这是针对具体实施的 – 垃圾收集器可能会清除所有的记忆, 因为它去, 以避免这样的事情。即使如此,仍有时间将实际字符包含为攻击窗口。char[]

如果他们只能获取内存的快照,那么您想要减少快照可能造成的伤害,或减少拍摄真正严重快照的窗口

文章翻译自 stackoverflow.com/questions/4…

真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话

求点赞? 求关注❤️ 求分享? 对8块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享