Максим!
Когда приложения спрашивают действующий пароль, это просто способ повторно убедиться, что перед нами тот самый пользователь. Такой механизм используют для защиты «деликатных» действий: смены пароля, удаления акаунта, включения или выключения двухфакторной аутентификации и прочих.
Если в процессе смены пароля не запрашивать действующий пароль, то открываются потенциальные уязвимости:
Пользователь зашел в приложение в интернет‑кафе в аэропорту и забыл выйти. Кто угодно может поменять пароль, почту и угнать акаунт.
Злоумышленник может угнать или перехватить сессионную куку пользователя, воспользоваться ею в своём браузере и поменять пароль.
Злоумышленник может воспользоваться 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. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.