Avatar ·

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! <<>>

Principal