Максим!

Когда приложения спрашивают действующий пароль, это просто способ повторно убедиться, что перед нами тот самый пользователь. Такой механизм используют для защиты «деликатных» действий: смены пароля, удаления акаунта, включения или выключения двухфакторной аутентификации и прочих.

Если в процессе смены пароля не запрашивать действующий пароль, то открываются потенциальные уязвимости:

Пользователь зашел в приложение в интернет‑кафе в аэропорту и забыл выйти. Кто угодно может поменять пароль, почту и угнать акаунт.

Злоумышленник может угнать или перехватить сессионную куку пользователя, воспользоваться ею в своём браузере и поменять пароль.

Злоумышленник может воспользоваться XSS‑уязвимостью, например, в сообщениях и прислать пользователю Яваскрипт‑код, который поменяет пароль без его ведома:

<script>
  fetch(
    '/change_password.php',
    {
      method: 'POST',
      credentials: 'include',
      body: { password: 'HACKED', password_confirmation: 'HACKED' }
    })
</script>

Злоумышленник может воспользоваться CSRF‑уязвимостью, прислать ссылку на свой сайт с «битой» картинкой, которая поменяет пароль:

<img
  src="https://.../change_password.php?password=HACKED&password_confirmation=HACKED">

Конечно, если злоумышленник получил доступ и к приложению, и к почте, он 100% сможет сменить пароль. Постарайтесь избегать таких ситуаций: включите двухфакторную аутентификацию, блокируйте компьютер, когда отходите от него, и не забывайте выходить из сервисов и приложений, когда пользуетесь чужим компьютером.

P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.

Веб‑разработка
Отправить
Поделиться
Запинить

Рекомендуем другие советы