什么是URL 跳转漏洞(URL Redirection Vulnerability)
URL 跳转漏洞(URL Redirection Vulnerability)是指攻击者利用网站或应用程序中未经验证的重定向功能,将用户引导至恶意网站的一种安全漏洞。
漏洞原理
未验证的重定向参数:网站使用用户提供的URL参数(如redirect_to、url)直接跳转,未检查目标是否合法。
开放重定向:允许外部域名的跳转,可能被用于钓鱼攻击。
常见利用方式
钓鱼攻击:伪造可信域名(如example.com?redirect=evil.com),诱导用户点击。
绕过安全策略:利用信任域名的跳转绕过浏览器同源策略。
// 漏洞示例:未验证的跳转
$redirect = $_GET['url'];
header("Location: " . $redirect);
尝试修改 redirect_uri 参数,观察是否跳转到未注册的域名。
实际案例
攻击者发送伪装成银行登录页的链接:
bank.com/login?redirect=https://phishing.com
用户看到bank.com域名,实际跳转后泄露凭证。
修复建议
白名单验证:只允许跳转到预定义的合法路径或域名。
注意配置 Valid redirect URIs ,必须包含 完整的 URL(协议 + 域名 + 路径)。
总结:
- 对重定向 URL 进行严格校验,避免使用通配符,明确列出完整路径避免直接使用
- 用户提供的 redirect_uri 参数,应在服务端二次校验。
- 避免直接使用用户提供的 redirect_uri 参数,应在服务端二次校验。