Skip to content

fix(manager): passwordless login links not invalidated by link scanners - #88

Open
Ibochkarev wants to merge 2 commits into
3.xfrom
fix/16743-passwordless-magic-link-invalidation
Open

Ibochkarev wants to merge 2 commits into
3.xfrom
fix/16743-passwordless-magic-link-invalidation

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 21, 2026

Copy link
Copy Markdown
Member

Что сделано

Office365 Safe Links (и другие mail-сканеры) ходят на URL passwordless-логина раньше вас. Это раньше сжигало одноразовый токен, поэтому ваш реальный клик получал «Your login link is not valid.»

Ссылка в почте теперь ведёт на ?magiclink_pending=hash. Вы попадаете на страницу подтверждения и кликаете Log me in. Только этот POST потребляет токен. Обычный GET с magiclink_pending или старым magiclink оставляет registry нетронутым.

Pending URL приходит из PHP ([[+magic_login_url]]). Если переведённый email-шаблон всё ещё хардкодит ?magiclink=, мы переписываем его при отправке. Старые ?magiclink= ссылки работают; просто показывают тот же шаг подтверждения. Добавлены EN-строки для confirm-страницы и пара контроллер-тестов.

Зачем нужно

Люди на Office365 (и подобных) не могли использовать passwordless-логин: сканер тратил ссылку первым. Просьба второго клика матчит то, что делают другие auth-стеки для этого класса багов.

Как проверить

  1. Включите passwordless_activated.
  2. Запросите одноразовую ссылку логина со страницы логина менеджера.
  3. Откройте ссылку из email. Должны увидеть страницу подтверждения.
  4. Кликните Log me in. Должны попасть в менеджер.
  5. Опционально: curl на pending URL, затем откройте в браузере и подтвердите. Логин должен работать.
  6. Опционально: откройте старый ?magiclink=hash URL. Страница подтверждения, затем логин после кнопки.

Связанные

Refs modxcms#16743

Оригинал: modxcms#16833

Email links open a confirmation page (?magiclink_pending=) instead of
consuming the one-time token. Login happens only after the user POSTs
the confirm button, so Office365 Safe Links and similar scanners no
longer burn the link before the real click.

Also rewrite non-EN email templates to the pending URL, keep legacy
?magiclink= on the confirm path, and add controller regression tests.

Fixes modxcms#16743
@Ibochkarev Ibochkarev changed the title fix(manager): passwordless-ссылки не инвалидируются сканерами ссылок fix(manager): passwordless login links not invalidated by link scanners Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant