发布于2020-11-14 09:17 阅读(592) 评论(0) 点赞(5) 收藏(4)
在Swing中,密码字段具有getPassword()
(returns char[]
)方法,而不是通常的getText()
(returns String
)方法。同样,我遇到了不建议使用String
密码的建议。
为什么String
涉及密码安全性受到威胁?使用起来感觉不方便char[]
。
字符串是不可变的。这意味着,一旦创建了String
,如果另一个进程可以转储内存,则除了反射之外,您将无法清除数据,然后再进行垃圾回收。
使用数组,您可以在使用完数据后显式擦除数据。您可以用任何喜欢的东西覆盖阵列,并且即使在垃圾回收之前,密码也不会出现在系统中的任何位置。
因此,是的,这是一个安全性问题-但是即使使用,也char[]
只会减少攻击者的机会窗口,并且仅用于这种特定类型的攻击。
如评论中所述,垃圾回收器移动的数组可能会将数据的零散副本保留在内存中。我相信这是特定于实现的-垃圾收集器可能会清除所有内存,以免发生这种情况。即使是这样,仍然会有一段时间char[]
包含实际角色作为攻击窗口。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/506/800d6d1cf290006829bd/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!