У меня есть угловое 6 FE + ASP.NET Core приложение для веб-сайта, который я создаю, но используемая технология не совсем важна для этого вопроса (я думаю).
Я хочучтобы узнать, достаточно ли безопасно (субъективно я знаю) включить маркер «регистрации» в URI в качестве параметра запроса строки, в то время как пользователь регистрируется / входит на сайт.
Сайт - это фантастикафутбольный сайт.Есть менеджер лиги, который может приглашать людей в лигу (отправить ссылку для приглашения по электронной почте).Допустим, название лиги «Фиолетовая лига 1»
Ссылка на электронную почту, которая разослана людям, выглядит следующим образом:
https://fantasyleague1.com/joinexisting?jointoken=abcdef123456789
например, отправлено моему другу: john@john.com
Токен соединения создается, когда ссылка отправляется на сервер, а токен связан с одним конкретным электронным письмом, все хранятся в базе данных и проверяются.с помощью серверного веб-приложения.Токен abcdef123456789 позволяет только пользователю с точным именем пользователя john@john.com присоединиться к лиге «Фиолетовая лига 1».
john@john.com может иметь или не иметь зарегистрированную учетную записьвнутри системы, поэтому после перехода по ссылке на соединение он будет перенаправлен (Auth Route Guard) на страницу входа и будет использовать toReturnUrl в качестве параметра строки запроса:
https://fantasyleage1.com/login?toReturnUrl=https://fantasyleague1.com/joinexisting?jointoken=abcdef123456789
(обратите внимание, что в этом посте я не кодировал URL toReturnURL, чтобы сделать его более читабельным)
Если у Джона уже есть аккаунт на сайте, он входит в систему и вступает в лигу - отлично.
Мой главный вопрос, однако, заключается в следующем: если у Джона нет учетной записи, ему придется зарегистрироваться (на странице / login есть кнопка, которая перенаправляет на / register), будет ли это проблемой безопасности, еслиссылка на регистр поддерживает этот параметр регистрации URL, поэтому, например, поток посещенных URL будет выглядеть примерно так:
https://fantasyleague1.com/joinexisting?jointoken=abcdef123456789 Auth Redirect ->
https://fantasyleage1.com/login?toReturnUrl=https://fantasyleague1.com/joinexisting?jointoken=abcdef123456789 Джон нажимает «Register», который добавляет еще один toReturnUrl в «стек» ->
https://fantasyleage1.com/register?toReturnUrl=https://fantasyleage1.com/login?toReturnUrl=https://fantasyleague1.com/joinexisting?jointoken=abcdef123456789 John Регистрирует и возвращает его к самому непосредственному toReturnUrl в «стеке» ->
https://fantasyleage1.com/login?toReturnUrl=https://fantasyleague1.com/joinexisting?jointoken=abcdef123456789 Джон входит в систему, и он ведет его к финальному toReturnUrl в стеке ->
https://fantasyleague1.com/joinexisting?jointoken=abcdef123456789 -> END, мы находимся справапоместите сейчас.
Я вижу другие сайты, которые НЕ следуют этому пути, как только пользователь должен зарегистрировать новую учетную запись, я увидел, что другие сайты просто "забывают" весь toReturnUrl и после того, как пользовательзарегистрирован, ему / ей просто нужно перейти по ссылке «присоединиться» в электронном письме для этого.Это из-за безопасности?Или усилие по кодированию?Мне не очень нравится это, кажется расточительным.
Обратная связь, если этот подход является правильным или нет, будет оценен.
Спасибо