OIDC nonce防护重放攻击的场景及未使用时的攻击向量咨询
关于SPA授权码+PKCE流程中未使用nonce的安全风险分析
一、未使用nonce参数的潜在攻击向量
- 重放攻击:攻击者可拦截用户合法获取的ID Token或授权码,在有效期内重复提交给SPA,冒充用户完成认证。由于无nonce验证,SPA无法区分该Token是当前会话生成的还是被重放的旧Token。
- 会话劫持后的身份滥用:若攻击者通过XSS等手段窃取用户的ID Token,只要Token仍在有效期内,就能直接在其他环境中使用该Token向SPA证明身份——没有nonce的会话绑定,SPA无法识别请求并非来自用户原始会话。
- 钓鱼场景下的身份冒充:攻击者搭建钓鱼页面诱导用户完成认证,获取合法ID Token后提交给真实SPA。因SPA不验证nonce,会误判为用户正常登录,让攻击者获得用户的访问权限。
二、被盗有效ID Token提交至SPA的具体问题
当攻击者将被盗的有效ID Token发送给SPA时,由于未启用nonce验证:
- SPA仅会验证Token的签名、有效期等常规字段,只要这些字段合法,就会认定Token有效,进而为攻击者建立会话,直接导致用户身份被冒充。
- 用户的敏感数据、操作权限会完全暴露给攻击者,攻击者可执行用户权限内的所有操作,比如查看个人信息、修改账户设置、发起交易等。
- SPA无法识别该Token并非来自用户当前的登录流程,难以实时检测到身份盗用行为,大幅增加了事后溯源和止损的难度。
内容的提问来源于stack exchange,提问作者Frédéric Mascaro
相关产品推荐
相关产品推荐

