Удаление пароля из памяти в Java после использования

Все мы знаем, что String в Java неизменяемый. А что будет, если мы считали в него пароль? Допустим, пароль к какому-нибудь сервису. Ну подключились мы к базе, а пароль больше не нужен. Проблема в том, что String неизменяемый. Даже когда мы потеряем все ссылки на него, он всё равно будет существовать до сборки мусора. И даже после сборки мусора он будет в памяти компьютера до того момента, когда на высвободившееся место не будет записано что-то другое. А если ещё учесть существование пула строк, который я уже описывал в статье про строки в Java

Для увеличения безопасности нам нужно минимизировать время, когда пароль находится в ОЗУ, а следовательно может попасть в дампы памяти. Более того, если оперативной памяти будет недостаточно, то страница памяти с паролем может быть записана в файл подкачки на диск, что ещё больше усугубит ситуацию.

Один из способов решения проблемы — использовать массив символов char[], а после использования пароля забивать этот массив нулями, тем самым сводя к минимуму время хранения пароля в оперативной памяти компьютера.


Поделиться:

Добавить комментарий

Ваш e-mail не будет опубликован.