用途:该技能面向 OAuth 2.0/OIDC 认证流程的生成与代码审查,帮助识别并修复因 state 参数缺失、可预测或未校验而引发的 CSRF 与账户接管问题,涉及 CWE-352、CWE-287,严重级别为高。
主要能力:说明反模式——发起 OAuth 流程时未带 state,或使用可预测值且回调时不校验;给出漏洞代码与安全代码对照,展示攻击路径:攻击者用自己的账户发起流程,截获回调 URL,诱导受害者访问,使应用把受害者会话关联到攻击者账户。
必要用法:授权请求中始终生成并携带 state;使用加密安全随机值(至少 32 字符,如 secrets.token_urlsafe(32)),重定向前置入会话;回调时取出请求 state 与会话值比较,不匹配返回 403;比较使用 secrets.compare_digest 常量时间;校验后从会话删除实现一次性;SPA 与移动端等公共客户端还需配合 PKCE。检测时从重定向点追踪:是否生成 state、是否随机不可预测;回调是否读取并比对会话值、是否常量时间比较、是否一次性。
适用场景:审查或编写 Flask 等框架的 OAuth/OIDC 登录与回调端点,安全代码评审与漏洞排查。
限制:资料未提供具体依赖版本、完整部署配置、性能数据或收费信息;示例为 Python/Flask,其他语言需自行适配。