Типичное использование в атаках
- Фишинг — ссылка выглядит доверенной
- OAuth redirect hijacking — подмена redirect_uri в OAuth flow
- Обход referer-проверок
Защита
- Whitelist разрешённых URL или доменов для редиректа
- Не принимать внешние URL в параметрах редиректа
- Сравнивать host URL с текущим доменом перед редиректом
// Проверка: только относительные URL
function safeRedirect(string $url): string {
$parsed = parse_url($url);
// отклонить если есть scheme или host
if (isset($parsed['scheme']) || isset($parsed['host'])) {
return '/'; // fallback на главную
}
return $url;
}