【发布时间】:2011-01-17 00:22:27
【问题描述】:
我们知道使用 char[] 而不是 java.lang.String 来存储密码是一种很好的做法。这是出于以下两个原因(如我所读):
- char[] 是可变的,因此我们可以在使用后清除密码。
- 字符串文字进入一个不会像其他对象一样被垃圾收集的池,因此可能会出现在内存转储中。
但是java.sql.DriverManager没有符合上述最佳实践的getConnection(),因为它的密码参数是String。
DriverManager.getConnection(String url, String user, String password)
我认为 API 应该有一个具有以下签名的重载方法:
DriverManager.getConnection(String url, String user, char[] 密码)
您对此有何看法?你有什么替代方法可以克服这个缺点吗?
很想听听你的想法。
【问题讨论】: