Выход из ВК может не завершить сессию пользователя, но показать страницу приветствия
Invite pending
На написание данной статьи меня подтолкнула эта запись После логаута пользователя VK можно получить управление его страницей, которая полна ложных заблуждений как в самом тексте статьи, так и в комментариях к ней.
Суть в том, что если ссылка выхода из ВК содержит невалидный параметр hash, то можно наблюдать страницу авторизации, хотя сессия пользователя всё ещё остаётся актуальной. Ввод любых данных в форму, даже валидных данных другого аккаунта, заново актуализирует авторизацию первого пользователя.
Переход по публичным страницам как эта https://vk.com/habr или же заход на главную страницу https://vk.com всё ещё покажет нам форму авторизации, как и запрос через OAuth.
А вот переход на любую непубличную страницу, к примеру https://vk.com/im, актуализирует сессию пользователя.
Опасность заключается в том, что браузер может выгрузить страницу ВК из памяти на диск, оставив валидные куки авторизации, хотя параметр hash со временем становится невалидным. Нажимая на кнопку выхода вы видите страницу приветствия, хотя сессия пользователя остаётся всё ещё валидной. И следующий пользователь браузера получит полный доступ к вашей странице.
Для воспроизведения достаточно:
p.s.: репортил пару лет назад, сказали не баг, но фича.
Суть в том, что если ссылка выхода из ВК содержит невалидный параметр hash, то можно наблюдать страницу авторизации, хотя сессия пользователя всё ещё остаётся актуальной. Ввод любых данных в форму, даже валидных данных другого аккаунта, заново актуализирует авторизацию первого пользователя.
Переход по публичным страницам как эта https://vk.com/habr или же заход на главную страницу https://vk.com всё ещё покажет нам форму авторизации, как и запрос через OAuth.
А вот переход на любую непубличную страницу, к примеру https://vk.com/im, актуализирует сессию пользователя.
Опасность заключается в том, что браузер может выгрузить страницу ВК из памяти на диск, оставив валидные куки авторизации, хотя параметр hash со временем становится невалидным. Нажимая на кнопку выхода вы видите страницу приветствия, хотя сессия пользователя остаётся всё ещё валидной. И следующий пользователь браузера получит полный доступ к вашей странице.
Для воспроизведения достаточно:
- Авторизоваться в ВК
- Перейти по ссылке https://vk.com/login.php?op=logout
- Проверить что вы вроде бы действительно вышли https://vk.com/habr
- Или всё же нет https://vk.com/im?
p.s.: репортил пару лет назад, сказали не баг, но фича.