Поэтому рекомендация по безопасности состоит в том, чтобы хранить пароль в виде символьного массива, потому что, в отличие от массивов, строки неизменны .По сути, это означает, что после того, как вы создали строку, она находится в памяти, даже если вы перезаписали ее, до тех пор, пока сборщик мусора не удалит ее.Это означает, что другой процесс может сбросить память (до запуска GC) и потенциально получить ваш пароль.С Arrays, с другой стороны, вы можете перейти и перезаписать массив, и никакой другой процесс не сможет его получить.
С массивом вы можете явно стереть данные после того, как с ним покончено.Вы можете перезаписать массив чем угодно, и пароль не будет нигде в системе, даже до сборки мусора.
Посмотрел org.apache.http.auth.UsernamePasswordCredentials , а UsernamePasswordCredentials
поддерживает только String
.Поэтому потенциально я бы просто сохранил пароль в виде массива char согласно вашей рекомендации по безопасности, а затем просто преобразовал бы его в String при вызове этого класса.Затем, если вы параноик, избавьтесь от класса, как только закончите, и сразу же запустите GC (это может привести к увеличению использования памяти).
Кроме того, если безопасность представляет собой серьезную проблему, ваши администраторы должны рассмотреть другие альтернативы, такие как отключение дампов ядра .