Методы проверки защиты от open redirect в OAuth/OIDC сценариях
Краткий ответ
Для тестирования защиты от open redirect в OAuth/OIDC необходимо подставлять вредоносные redirect_uri, проверять их наличие в whitelist, удостоверяться в точном совпадении и запрещать использование wildcard в параметрах.
Развёрнуто
Краткий ответ
Для эффективного тестирования защиты от open redirect в OAuth/OIDC следует подставлять скомпрометированные redirect_uri, контролировать строгий whitelist, обеспечивать точное совпадение URL и исключать wildcard-символы в redirect_uri.
Как это работает
Open redirect — уязвимость, при которой злоумышленник может перенаправить пользователя на произвольный URL, используя OAuth/OIDC flow. В частности, параметр redirect_uri должен быть строго проверен сервером авторизации. В идеале сервер сравнивает запрашиваемый redirect_uri с заранее определённым списком разрешённых адресов — whitelist.
Важно, чтобы проверка была строго точной, а не частичной или с использованием wildcard, например, https://*.example.com. Это предотвращает подмену URL и исключает возможность перенаправления на вредоносные сайты.
Тестирование включает попытки подставить вредоносные или изменённые redirect_uri и проверку того, что сервер их отклоняет.
| Элемент проверки | Описание | Результат при правильной защите |
|---|---|---|
| Вредоносный redirect_uri | Попытка использовать произвольный URL | Запрос отклоняется, редирект не происходит |
| Whitelist | Перечень разрешённых redirect_uri | Сервер принимает только URL из списка |
| Проверка совпадения | Точное сравнение полного URL без wildcard | Обеспечивает отсутствие обхода фильтрации |
Пример
1. В запросе OAuth передаём redirect_uri=https://evil.com
2. Сервер проверяет: есть ли https://evil.com в whitelist? Нет.
3. Сервер возвращает ошибку или игнорирует redirect_uri.
4. Пользователь не перенаправляется на вредоносный сайт.
Что важно знать на собеседовании
- Open redirect может привести к фишингу и компрометации сессий.
- whitelist должен содержать точные URL без wildcard.
- Валидация redirect_uri — обязанность сервера авторизации.
- Тестировать нужно как положительные, так и отрицательные кейсы.
- Знание спецификаций OAuth 2.0 и OIDC помогает понять, как должна работать проверка.
Тема: Безопасность и авторизация | Уровень: senior