客户端 URL 重定向¶
ID: js/client-side-unvalidated-url-redirection
Kind: path-problem
Security severity: 6.1
Severity: error
Precision: high
Tags:
- security
- external/cwe/cwe-079
- external/cwe/cwe-116
- external/cwe/cwe-601
Query suites:
- javascript-code-scanning.qls
- javascript-security-extended.qls
- javascript-security-and-quality.qls
重定向到从 DOM 部分构建的 URL,而这些部分可能受攻击者控制,会促进钓鱼攻击。在这些攻击中,毫无戒心的用户可能会被重定向到一个恶意网站,该网站看起来非常类似于他们打算访问的真实网站,但实际上是由攻击者控制的。
建议¶
为了防止不受信任的 URL 重定向,建议避免将用户输入直接放入重定向 URL。相反,在服务器上维护一个授权重定向列表;然后根据提供的用户输入从该列表中进行选择。
示例¶
以下示例使用正则表达式从文档 URL 中提取查询参数,然后使用它来构建一个新的 URL 以进行重定向,而无需任何进一步的验证。这可能允许攻击者制作一个链接,该链接从受信任的网站重定向到他们选择的任意网站,从而促进钓鱼攻击。
window.location = /.*redirect=([^&]*).*/.exec(document.location.href)[1];
参考资料¶
OWASP: XSS 未验证重定向和转发速查表.
通用弱点枚举:CWE-79.
通用弱点枚举:CWE-116.
通用弱点枚举:CWE-601.