开放重定向 (Open Redirect) 是指 Web 应用程序在未验证外部传入的 URL 参数值的情况下,直接将其用作重定向目标的安全漏洞。它是 OWASP (Open Web Application Security Project) 定义的主要 Web 安全风险之一。
举个例子,当访问「https://trusted-site.com/redirect?url=https://evil-site.com」时,如果 trusted-site.com 不验证 url 参数的值就执行重定向,用户以为点击的是可信域名的链接,实际上却被引导到了恶意网站。
开放重定向被钓鱼攻击利用的原因在于,可信域名的 URL 成为了链接的入口。邮件安全过滤器和用户的肉眼检查往往只看链接开头是否为正规域名,就判定为安全。
短链接服务本质上就是重定向服务,因此与开放重定向问题密切相关。恶意用户利用短链接服务创建指向钓鱼网站的链接的案例确实存在。作为应对措施,主流短链接服务实现了恶意软件扫描、黑名单比对、闪屏页面 (重定向前的警告画面) 等安全功能。
开发者防范开放重定向的方法包括:用白名单限制重定向目标、仅允许相对 URL、验证重定向目标的域名等。无论何种情况,都应避免将 URL 参数直接用作重定向目标。相关书籍可在 Amazon 搜索 中查阅。