Les chaînes sont immuables. Cela signifie que lorsque vous avez créé la chaîne, si un autre processus de vidage de mémoire, il n'y a aucun moyen (à part de la réflexion), vous pouvez vous débarrasser de ces données avant GC coups de pied dans.
Avec un tableau, vous pouvez explicitement effacer les données après que vous avez terminé avec lui: vous pouvez remplacer le tableau avec ce que vous voulez, et le mot de passe ne sera pas présente dans le système, même avant la collecte des ordures.
Donc oui, c' est un problème de sécurité - mais même en utilisant char[]
seulement réduit la fenêtre d'opportunité pour un attaquant, et c'est seulement pour ce type d'attaque.
EDIT: Comme indiqué dans les commentaires, il est possible que les piles soient déplacés par le garbage collector de laisser vaguer les copies des données dans la mémoire. Je crois que c'est spécifique à l'implémentation - le GC peut effacer la mémoire comme il va, pour éviter ce genre de chose. Même si elle le fait, il y a encore le temps pendant lequel l' char[]
contient les caractères comme une attaque de la fenêtre.