EMZETT.
Войти

Open redirect: небезопасные перенаправления

Коротко: Open redirect возникает, когда сайт перенаправляет пользователей на адрес, взятый из параметра запроса, не проверяя его. Злоумышленники используют это, чтобы направлять жертв через доверенный сайт на мошеннические.

Подробнее: Пример: https://shop.example/login?next=https://evil.example. После входа страница слепо перенаправляет на next. Ссылка начинается с настоящего домена и выглядит надёжно.

Подробности

  • Опасность: Фишинг выглядит правдоподобнее. Кроме того, можно атаковать процессы входа (адреса возврата OAuth), где коды или токены попадают на целевой адрес.
  • Защита 1: Разрешать только относительные пути (/account), а не полные адреса. Остерегайтесь //evil.example и /\evil.example, которые браузеры трактуют как чужие адреса.
  • Защита 2: Белый список допустимых целей. Разберите адрес и сравните хост со списком, а не «начинается с».
  • Защита 3: Передавать вместо адреса идентификатор (?next=account), который сервер сам переводит в путь.
  • Страница предупреждения: Если внешние цели приходится допускать, сначала показывайте промежуточную страницу «Вы покидаете этот сайт».
  • Проверка: Пробуйте параметры вроде next, url, redirect, return_to в тестах с чужими адресами.

См. также: фишинг, OAuth