当前位置:  开发笔记 > 编程语言 > 正文

在创建帐户时,如何将密码存储在内存中?

如何解决《在创建帐户时,如何将密码存储在内存中?》经验,为你挑选了2个好方法。

我们的基于Web的应用程序使用帐户创建期间指定的密码将用户帐户绑定到用户.对于Java,在将哈希值保存在数据库中之前,如何安全地处理密码.

更具体地说,如何确保持有密码的字符串在足够短的时间间隔内被垃圾收集?



1> Markus Lux..:

如果您有可能(在Web应用程序中可能很难),最好将密码存储在字符数组中,而不是将它们存储在字符串中.如果您已完成存储密码,则可以使用Array.fill()在内存中覆盖它,并通过丢弃它来为垃圾收集器提供引用:

Arrays.fill(password, ' ');
password = null;

我只是注意到取消密码会有点偏执,但如果它让你放心,你可以做:)


这是否要求垃圾收集器不压缩堆栈,从而将数组的副本留在内存中的其他位置?

2> TofuBeer..:

您不使用String.使用char []然后在完成时覆盖char [].

在垃圾收集方面绝对没有保证(除了终结器将在收集对象之前运行).GC可能永远不会运行,如果它运行它可能永远不会GC具有密码的字符串.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有