Por que armazenar senhas em Java é preferível com char[] em vez de String?
Olá a todos! Sou um desenvolvedor Java iniciante e estou escrevendo um pequeno aplicativo para autenticação de usuários. Me deparei com uma questão de segurança ao trabalhar com senhas.
Normalmente, uso String para inserir a senha do console ou do campo JPasswordField. Por exemplo:
```java
Console console = System.console();
String password = new String(console.readPassword("Digite a senha: "));
```
Mas recentemente, em um fórum, li que usar String para senhas é uma má prática e que é melhor usar char[]. Sinceramente, não entendo bem qual é a diferença. Afinal, String é apenas um conjunto de caracteres, assim como um array char. Por que se considera que char[] é mais seguro?
Entendo que String é imutável, mas isso é um problema? Afinal, após usar a senha, posso simplesmente atribuir null à variável, e o garbage collector mais cedo ou mais tarde removerá a string da memória.
Alguém pode explicar de forma simples qual é o problema? E como organizar corretamente o trabalho com senhas em Java? Ficarei grato.
No answers yet.
Faça login para deixar uma resposta