Por que é preferível usar char[] em vez de String para armazenar senhas?
Olá a todos! Sou um desenvolvedor Java iniciante e tenho uma dúvida sobre segurança ao trabalhar com senhas. Frequentemente vejo no código que senhas são armazenadas em String, mas recentemente me deparei com a recomendação de usar char[].
Tenho uma classe simples para autenticação:
```java
public class UserAuthenticator {
private String password;
public void setPassword(String pwd) {
this.password = pwd;
}
public boolean authenticate(String input) {
return password.equals(input);
}
}
```
Tudo funciona, mas um colega disse que isso é vulnerável. Não entendo bem qual é o problema. Afinal, String é um objeto imutável, isso não é um ponto positivo para a segurança? Ou estou perdendo algo?
Por favor, expliquem com exemplos por que char[] é considerado mais seguro para senhas e como usá-lo corretamente. Quais são os riscos associados ao String? E como, de fato, lidar com senhas em aplicações Java? Desde já agradeço pelas explicações!
<<>>