在 Java 中处理密码时,我的理解是它们应该始终在 char[] 中处理,以允许 GC 并删除挂起的引用。
我的问题是,
char[] password = String.valueOf(authentication.getCredentials()).toCharArray();
authentication.getCredentials() 的值是否可以保留?
最佳答案
String.valueOf()
不实习字符串。在运行时实习字符串的唯一方法是使用 password.intern()
。 无需使用 使用 char[]
作为密码。char[]
允许您在使用后直接清除数组,从而缩短攻击者的时间范围转储内存并检索明文密码。
对于 GC 来说,String 本身并没有什么特别之处。实习会有点影响,但在常规使用中您不会遇到任何异常情况。
关于java - String.valueOf() 的实习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32861548/