PassFront
  1. PassFront
  2. База знаний
  3. Атаки на клиент

Что такое open redirect и почему он опасен?

Атаки на клиент

Open redirect — уязвимость, при которой сайт перенаправляет пользователя по адресу из параметра, не проверяя его, например ?next=https://evil.com.

Почему это проблема

Ссылка выглядит доверенной (https://site.com/login?next=...), но после входа пользователь оказывается на фишинговой странице. Также open redirect помогает обходить проверки в OAuth и красть коды авторизации.

Как защититься

  • Разрешать только относительные пути, начинающиеся с одного /, и отвергать //evil.com и /\evil.com.
  • Или сверять адрес с белым списком доменов.
  • Разбирать адрес через new URL() и сравнивать origin, а не искать подстроку.
function safeNext(next) {
  try {
    const url = new URL(next, location.origin);
    return url.origin === location.origin ? url.pathname + url.search : '/';
  } catch {
    return '/';
  }
}

Коротко для собеседования

Не перенаправляйте на произвольный адрес из параметров. Допускайте только свой origin или белый список.

Другие вопросы раздела