Иногда пользователи или заказчики просят добавить в админку (или личный кабинет) функцию, чтобы система спрашивала пароль при каждом важном действии и "запоминала" его.
На первый взгляд кажется, что это удваивает защиту. Но на самом деле это создает ложное чувство безопасности и не защищает от главной угрозы.
Как это обычно работает технически?
Чтобы "запомнить" пароль на время сессии, сайт должен сохранить его у вас в браузере. Чаще всего это делается через:
Куки (Cookies): Сайт кладет ваш пароль прямо в файл куки. Даже если его зашифровать, злоумышленник, укравший сессию, сможет его перехватить.
Local Storage: Сайт хранит пароль в памяти вкладки. Это чуть удобнее для разработчика, но для вируса или хакера это такая же "открытая книга", как и куки.
Почему это бессмысленно?
Представьте, что ваша сессия - это ключ от квартиры, а пароль -это паспорт, который вы показали при входе в подъезд.
Если украли сессию (ключ): Злоумышленник уже вошел в "квартиру" (аккаунт). Если мы просим его подтвердить действие паролем, мы как бы спрашиваем: "Покажи паспорт". Но паспорт (пароль) лежит в том же самом месте, где лежал ключ (в куках или памяти браузера). Вор взял связку ключей? Он заодно прихватил и копию паспорта, которая лежала рядом.
Пароль в открытом виде: Даже если использовать сложное шифрование на клиенте (в JavaScript), хакер, который уже имеет доступ к вашей сессии, имеет доступ и к расшифровщику. Он просто запустит ту же функцию, что и сайт, чтобы вытащить пароль.
Правильный подход к безопасности
Если действие действительно важное (списание денег, смена почты), используется не запоминание пароля, а повторный ввод (Re-authentication).
Как это делают нормально (Google, банки, биржи):
Пользователь нажимает "Перевести деньги".
Система прерывает сессию и требует ввести пароль заново вручную (или прислать код из СМС).
Пароль проверяется на сервере и сразу же уничтожается. Он не сохраняется в куках и памяти.
Если сессию угнали, вор упрется в стену: он не знает пароль наизусть, а подсмотреть его негде - система его не хранит.
Просьба "пусть пароль запоминается" - это попытка совместить удобство (не вводить постоянно) с безопасностью (подтверждать действия). Так не бывает. Если вы сохранили пароль в браузере, вы создали вторую копию ключа и положили её под коврик у двери.