Нам всем велено всегда использовать char[]
вместо java.lang.String
для обработки простых текстовых паролей в приложениях Java.Из-за неизменной природы java.lang.String
, которая позволяет злоумышленникам сделать моментальный снимок кучи (до запуска GC) и прочитать пароли из этого моментального снимка.
Теперь я удивлен, увидев весеннюю защиту с использованием String
передавать пароли.Например, UserDetails .
Это проблема безопасности?А если нет, то почему нет?Если да, как я могу безопасно использовать Spring-Security, не раскрывая пароли в куче Java или хотя бы минимизируя риск их раскрытия?
См. Почему char [] предпочтительнее, чем String для паролей?