从安全角度考虑,最佳实践是不要使用String来存储密码,而是用char[]。这适用于任何时候使用密码吗?例如,使用JDBC时使用String保存密码是否可接受?
public final void Login(String username, String password){
...
conn = DriverManager.getConnection(url, username, password);
...
}
或者在这里可以使用char[]来替换String吗?
从安全角度考虑,最佳实践是不要使用String来存储密码,而是用char[]。这适用于任何时候使用密码吗?例如,使用JDBC时使用String保存密码是否可接受?
public final void Login(String username, String password){
...
conn = DriverManager.getConnection(url, username, password);
...
}
我不认同你的前提,即在系统资源(例如JDBC数据库连接)的上下文中,char []
比String更安全。无论如何,您可以使用连接管理器(或连接池,适用于您的容器),然后连接管理器(仅连接管理器)可以看到底层数据库用户名/密码。
intern()
,它都会像普通数组一样被垃圾回收。但是,在任何情况下,被回收并不意味着其内存被覆盖。当然,将 "password"
写入代码中是另一回事,因为字符数据甚至在没有创建字符串时就存在于类数据的一部分中。 - Holger