本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看活动链接
提问:为什么char[]优先于字符串的密码?
在 Swing 中,密码字段有一个 (返回) 方法,而不是通常的 (返回) 方法。同样,我遇到一个建议,不要用于处理密码。getPassword()char[]getText()StringString
为什么在密码方面对安全构成威胁?使用时感觉不方便。Stringchar[]
高分回答:
字符串是不可改变的。这意味着,一旦你创建了,如果另一个过程可以转储内存,没有办法(除了反射),你可以摆脱数据之前,垃圾收集开始。String
使用数组,您可以在完成数据后明确擦除数据。您可以用任何您喜欢的东西覆盖阵列,即使在垃圾收集之前,密码也不会出现在系统中的任何地方。
所以,是的,这是一个安全问题 – 但即使使用只减少了攻击者的机会窗口,它只针对这种特定类型的攻击。char[]
如评论所述,垃圾收集器移动的阵列可能会在内存中留下数据的杂散副本。我相信这是针对具体实施的 – 垃圾收集器可能会清除所有的记忆, 因为它去, 以避免这样的事情。即使如此,仍有时间将实际字符包含为攻击窗口。char[]
如果他们只能获取内存的快照,那么您想要减少快照可能造成的伤害,或减少拍摄真正严重快照的窗口
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞? 求关注❤️ 求分享? 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END