среда, 11 июля 2012 г.

Почему для хранения паролей в java-коде лучше использовать char[], а не String.


  1. Так как String неизменяемый класс (immutable), то его невозможно очистить, и следовательно пароль будет находиться в памяти JVM до тех пор, пока String с паролем не будет очищен GC. Положение усугубляется тем, что для объектов типа String в JVM существует специальный pool (см. String.intern()), и если пароль попал в этот pool, то его хранение может пережить не один GC.
  2. Если объект с паролем случайно попадет в лог, то в случае использования String в логе мы увидим сам пароль, а при использовании char[] будет что-то типа этого:  [C@110b053
Более подробно по теме можно почитать здесь: http://javarevisited.blogspot.com/2012/03/why-character-array-is-better-than.html

Комментариев нет:

Отправить комментарий