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в тестах с чужими адресами.