Pourquoi char[] est préférable à String pour stocker les mots de passe en Java ?
Bonjour à tous ! Je suis un développeur Java débutant, j'écris une petite application d'authentification utilisateur. J'ai rencontré une question de sécurité lors du travail avec les mots de passe.
Habituellement, j'utilise String pour saisir le mot de passe depuis la console ou depuis un champ JPasswordField. Par exemple :
```java
Console console = System.console();
String password = new String(console.readPassword("Entrez le mot de passe : "));
```
Mais récemment, sur un forum, j'ai lu qu'utiliser String pour les mots de passe est une mauvaise pratique, et qu'il vaut mieux utiliser char[]. Honnêtement, je ne comprends pas bien la différence. Après tout, String n'est qu'un ensemble de caractères, comme un tableau char. Pourquoi char[] est-il considéré comme plus sûr ?
Je comprends que String est immutable (immuable), mais est-ce vraiment un problème ? Après avoir utilisé le mot de passe, je peux simplement assigner null à la variable, et le garbage collector finira par supprimer la chaîne de la mémoire.
Quelqu'un pourrait-il m'expliquer simplement où est le piège ? Et comment organiser correctement le travail avec les mots de passe en Java ? Je serai reconnaissant pour toute explication.
No answers yet.
Connectez-vous pour laisser une réponse