我们知道使用 char[] 而不是 java.lang.String 来存储密码是一个很好的做法。这是由于以下两个原因(正如我所读到的):
- char[] 是可变的,因此我们可以在使用后清除密码。
- 字符串文字进入一个池,该池不会像其他对象一样被垃圾收集,因此可能出现在内存转储中。
但是java.sql.DriverManager没有符合上述最佳实践的getConnection(),因为它的密码参数是String。
DriverManager.getConnection(字符串 url, 字符串用户, 字符串密码)
我认为 API 应该有一个具有以下签名的重载方法:
DriverManager.getConnection(字符串 url, 字符串用户,char[]密码)
你怎么看待这件事?您是否有其他方法可以克服这个缺点?
很想听听您的想法。
String literals进入池中,但我不希望密码是文字(在程序中硬编码)。我希望它来自配置或类似的配置。因此,它不会是字面意思,will收集垃圾(假设所有引用都已装箱)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)