向已有账号添加同邮箱第三方认证时的身份验证问题
无重新验证时基于邮箱匹配添加第三方认证的安全风险分析
场景1:用户用关联同邮箱的第三方账号(如FB)登录/注册
直接自动绑定并登录的做法存在明确安全风险:要是攻击者盗了某个第三方平台的账号,而这个账号的关联邮箱刚好和你的平台上某用户的邮箱一致,攻击者就能直接绕过原账号的登录凭据,登录该用户的平台账号。
虽然很多网站都这么做,但这是「用户体验优先」和「安全性」的权衡结果。如果要兼顾安全,正确流程应该是:检测到第三方账号的邮箱已存在平台账号时,先提示用户选择「登录现有账号」还是「创建新账号」;若用户选登录现有账号,必须要求其通过原账号的登录方式(密码、已绑定的其他第三方认证等)重新验证,验证通过后再绑定新的第三方认证并完成登录。
场景2:已登录用户在账号设置中添加第三方认证(邮箱可同可不同)
这种场景下,添加第三方认证属于敏感操作,必须要求重新验证。道理很简单:如果用户的账号当前被攻击者盗用登录(比如用户在公共设备上没退出),攻击者可以直接添加自己的第三方账号,之后就能随时登录该用户账号,用户可能完全不知情。
Stack Overflow的做法偏向用户体验,但从安全角度并不严谨。更稳妥的流程是:用户触发添加操作后,先要求通过原账号的任一现有方式重新验证(比如输入密码、用已绑定的其他第三方账号验证、发送验证码到绑定邮箱/手机),验证通过后再完成绑定,同时给原账号邮箱发送通知,告知用户新增了第三方登录方式。
内容的提问来源于stack exchange,提问作者ProgZi
相关产品推荐
相关产品推荐

