JPasswordField.getPassword() 的安全原因是什么?

Ale*_*rov 5 java security passwords swing jpasswordfield

自 Java 1.2 以来,JPasswordField.getText()“出于安全原因”已被弃用,鼓励使用getPassword()“为了更安全”的方法。

但是,JPasswordField通过分析堆转储 ( JPasswordField instance -> model -> s -> array) ,我至少能够获得存储在 Oracle JRE 1.7 中的密码。

那么如何JPasswordField.getPassword()帮助保护密码呢?

Dam*_*ver 3

嗯,它的文档指出:

为了增强安全性,建议在使用后将返回的字符数组清除,将每个字符设置为零。

但是,当然,如果您使用该getText方法,您会返回一个不可变的字符串,因此您无法执行相同的建议。