OAuth域名伪造是一种攻击手段,攻击者通过伪造合法的OAuth服务提供方(如Google、Facebook等)的域名或登录页面,诱导用户输入敏感信息(如账号密码或授权令牌)。以下是几种常见的伪造方式及防护措施:
1. 钓鱼域名注册
攻击者注册与正规OAuth服务商相似的域名(如`g00gle-auth.com`仿冒`google.com`),利用用户视觉疏忽诱导访问。
- 防御:用户需手动核对域名拼写,企业应部署DNSSEC防止域名劫持。
2. 子域名欺骗
利用合法域名的子域名构造欺骗性链接(如`auth.legit.com.fake.com`),利用用户对主域名的信任。
- 防御:浏览器应强制显示完整域名,开发者需验证OAuth回调URL的精确匹配。
3. IDN同形字攻击
使用Unicode字符伪造视觉相同的域名(如`аррӏе.com`冒充`apple.com`)。
- 防御:浏览器已逐步限制IDN显示,用户需注意地址栏的Punycode编码(如`xn--80ak6aa92e.com`)。
4. 中间人攻击(MITM)
通过劫持网络流量,将OAuth请求重定向到伪造端点。
- 防御:强制使用HTTPS,部署HSTS头,并验证证书的颁发者信息。
5. 反向代理伪造
攻击者在自己的服务器上反向代理真实OAuth页面,窃取用户输入的凭证。
- 防御:服务端应检查HTTP头(如`X-Forwarded-Host`),前端通过JavaScript验证`window.location`。
6. OAuth令牌窃取
伪造的回调页面直接截获授权码或令牌。
- 防御:使用PKCE(Proof Key for Code Exchange)机制,确保只有合法客户端可兑换令牌。
扩展知识
OAuth 2.0的`state`参数用于防御CSRF,但无法阻止域名伪造。
RFC 8252推荐使用应用专属URI(如iOS的`applinks`)替代传统回调URL。
企业可实施FIDO2/WebAuthn实现无密码认证,减少对OAuth的依赖。
用户应始终警惕未经验证的跳转链接,开发者需在OAuth集成中严格校验`redirect_uri`和令牌签名。
查看详情
查看详情