扫码登录的便利账本:会话确认机制与二维码钓鱼的防范边界 图 1
扫码登录的便利账本:会话确认机制与二维码钓鱼的防范边界 · 图 1

用 App 扫一下网页上的二维码,电脑端就登录成功了——整个过程你没输密码、没碰验证码。方便是真的,变化也是真的:认证的重心从“你知道什么”挪到了“你批准了什么”。理解这一点,才能看懂围绕它的新型钓鱼。

机制拆开只有四步。网页端向服务器申请一次性的登录请求,把它编码进二维码;这个请求背后是一串短时效的会话令牌,本身不含密码;你用已登录的 App 扫码,App 在自己的安全环境里向服务器表达“机主批准了这次网页登录”——通常还伴随一次生物识别或确认点击;服务器确认后,把会话令牌发放给那台网页设备。整套设计的安全前提只有一个:批准发生在你信任的那台手机、且你清楚批准的对象是谁。任何破坏这个前提的操作,都在掏空扫码登录的安全性。

于是攻击形态也清晰了。最典型的是二维码转发:攻击者先在自己这边生成登录二维码,再通过消息、邮件或弹窗把它推给你,配一句“扫码验证一下身份”,你一扫一确认,网页那端以你的身份登录成功——你批准的不是验证,而是把他的设备变成你的会话。变种包括:线下张贴的替换二维码(贴在你的常去场景旁边)、诱导你“截屏发我”的收款码页面里夹带登录码,以及把登录码包装成活动签到、连WiFi、领小样的门面。共同点是:正规流程不需要你扫描别人递来的二维码来完成“验证”,验证从来是平台来找你,而不是你扫它。

防线因此可以写得很短。只使用“从你自己的设备、自己的浏览器发起”的扫码登录:先在网页上点登录,确认二维码是你这一端刚生成的;别人发来的任何二维码——包括自称客服、活动方、同事的——在涉及账户时一律不扫;你的 App 弹出登录确认时,核对提示里展示的设备类型、地区和发起内容与你此刻的行为是否吻合,对不上就拒绝并把账号密码改掉;手机本身保持锁屏密码与 App 锁,毕竟扫码确认等于把印章交给了拿到手机的人。

万一中招——比如扫完发现确认页已经关掉——处置顺序是:立即在官方 App 里修改密码,进入登录设备或会话管理页,吊销全部网页与陌生设备会话,再检查邮箱与验证器有没有被顺带改动;若该账户可提币,加开提币白名单一类的出口限制。

有两类边缘场景值得单独提醒。其一是“设备确认疲劳”:如果你的 App 频繁弹出你无法解释的登录确认,哪怕每一次都点了拒绝,也应视为有人已掌握你的账户入口并持续试探,这不再是偶发钓鱼而是针对性攻击,值得提高一档处理——立即改密、吊销全部会话、通知平台风控。其二是“双人协助”场景:家人不会操作时常常“把手机给我我帮你扫”,请记住扫码确认等于把账户印章交出去,代扫别人的二维码与让别人代扫自己的,是同一枚硬币的两面。可以在家庭内部约定一个简单的口令协议:任何要求扫码、确认、共享屏幕的请求,先电话回访当事人再动手。技术机制解决“能不能”,这些约定解决“该不该”,两层都在线,扫码登录才是净收益的便利。日常还可以给这项便利设一个使用范围:网页端尽量只在纯查看类场景使用扫码登录,涉及提币、改安全设置的敏感操作留在自己设备的 App 内完成,把“扫一下就能进”的会话权限与“进去也不能做大事”的账户权限分开,攻击面自然收窄。本文只讲机制与防御,不构成任何投资建议。