漏洞描述
当 Web 应用程序接受不受信任的输入时,可能会导致 Web 应用程序将请求重定向到不受信任的输入中包含的 URL,这时就可能出现未经验证的重定向和转发。
漏洞影响
通过修改输入到恶意站点的不受信任的 URL,攻击者可以成功启动网络钓鱼诈骗并窃取用户凭据。由于修改后的链接中的域名与原始域名相同,因此网络钓鱼将变得更难以分辨。 未经验证的重定向和转发攻击也可以用来恶意制作一个能通过应用程序设置的访问控制检查的 URL,借此将攻击请求转发到攻击者通常无法访问的特权功能。
修复建议
可以通过多种方式安全地使用重定向和转发:
尽可能避免使用重定向和转发。
如果必须使用,则不允许将 URL 作为用户输入的目标。
在可能的情况下,让用户提供短名、ID 或令牌,这些短名、ID 或令牌将在服务器端映射到完整的目标 URL。这可提供最高程度的保护,以防止攻击者篡改 URL。
如果无法避免用户输入,请确保提供的值有效,适合于应用程序并且已授权给用户。
通过创建一个受信任的 URL 列表(主机列表或 regex)来对输入进行过滤检查,注意这应该基于白名单的方法,而不是黑名单。
强制所有重定向首先通过一个页面通知用户他们将离开你的网站,并清楚地显示目的地,并让他们点击一个链接来确认。