Небезопасно ли помещать имя пользователя и токен в маршрут страницы https?

Я ищу передовой опыт и безопасный подход к обработке страницы обновления пароля в SPA. Пользователь будет перенаправлен с именем пользователя и временным токеном со страницы входа, когда срок действия его пароля истечет. Пока нашел несколько вариантов:

  • Ввод имени пользователя и токена в строку запроса, например: /reset-password?username=test&token=jfF5$88F...
  • Помещение имени пользователя и токена в параметр URL, например: /reset-password/:username/:token

Другие параметры, не связанные с URL:

  • Ввод в pushState. в моем случае с использованием react-router-dom: history.push({ state: { username, token } })
  • Помещение в Cookie или LocalStorage

Но мой главный вопрос заключается в том, что помещать эти данные в URL-адрес безопасно или нет? Может ли «Человек посередине» перехватить данные даже в протоколе https?


person Emad Emami    schedule 24.07.2020    source источник
comment
да, я бы использовал имя пользователя в качестве полезной нагрузки в jwt вместе с другой информацией   -  person Reza    schedule 24.07.2020
comment
@Reza Токена jwt нет, потому что это не был успешный вход в систему. Токен является временным токеном   -  person Emad Emami    schedule 24.07.2020


Ответы (1)


Обычно вы не ставите секреты в URL-адреса. Причина в том, что каждому балансировщику нагрузки или прокси-серверу разрешено регистрировать URL-адреса для целей отладки. Мы не хотим, чтобы наши секреты утекли только потому, что утекли логи.

Есть одно исключение из этого правила — когда секрет одноразовый. Когда он становится недействительным сразу после его использования. Причина этого исключения заключается в том, что не было бы другого способа передачи секретов, например. почты.

Если HTTPS настроен правильно, никто не сможет захватить данные. URL-адрес является частью полезной нагрузки HTTP и будет полностью зашифрован, если это то, что вас интересует.

person Marek Puchalski    schedule 24.07.2020