为什么不用DriverManager.getConnection(String url,String user,char []密码)?

Kau*_*lya 11 java security string char

我们知道优先选择char []而不是java.lang.String来存储密码.这是出于以下两个原因(正如我所读):

  1. char []是可变的,因此我们可以在使用后清除密码.
  2. 字符串文字转到不会将垃圾收集为其他对象的池,因此可能会出现在内存转储中.

但是java.sql.DriverManager没有符合上述最佳实践的getConnection(),因为它的password参数是String.

DriverManager.getConnection(String url,String user,String password)

我认为API应该有一个带有以下签名的重载方法:

DriverManager.getConnection(String url,String user,char [] password)

你怎么看待这件事?你有没有看到任何替代方法来克服这种退缩?

很想听听你的想法.

Bri*_*new 4

字符串文字放入池中,但我不希望密码是文字(在程序中硬编码)。我希望它来自配置或类似的配置。因此,它不会是一个文字,并且被垃圾收集(假设所有引用都被装箱)。