最近和同事讨论登录安全时,我们聊到了一个真实遇到,藏得很深的安全问题。 它发生在用户登录后,在“绑定三方账号”功能时,被伪造攻击。 惯例,下边是我们按照自己的真实经验,让 AI 代笔。

一、背景介绍

在现代 Web 应用中,提供微信、QQ、GitHub 等第三方账号绑定功能已经非常常见。用户在登录网站后,可以选择绑定自己的第三方账号,实现快捷登录或账号互通。

然而,如果绑定接口设计不安全,攻击者可能通过脚本注入或诱导点击的方式,将你的网站账号绑定到他们自己的第三方账号上,从而实现账号劫持。


二、常规绑定流程

以“绑定微信账号”为例,一个典型流程如下:

  1. 用户登录网站;
  2. 用户点击【绑定微信】按钮;
  3. 跳转或弹出微信授权窗口;
  4. 用户授权后,微信返回一个授权 key(如 code);
  5. 前端拿到 key,请求后端绑定接口;
  6. 后端完成绑定,将微信账号与当前用户账号关联。

三、安全风险分析

如果攻击者在你登录网站后,通过 XSS 或其他方式在页面中注入恶意脚本,就可能诱导你点击一个伪造的“绑定按钮”,而绑定的是攻击者自己的微信账号 key

攻击流程如下:

  1. 用户正常登录;
  2. 恶意脚本弹出伪装绑定窗口;
  3. 用户点击确认;