欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

OAuth 2.0 授权码拦截:redirect_uri 校验缺陷与 PKCE 加固

发表于:|最后更新:|分类:Web安全|阅读:3527 次

若授权服务器对 redirect_uri 采用前缀匹配或通配校验,攻击者可构造恶意回调地址截获授权码(Authorization Code),进而换取受害者访问令牌。

OAuth 2.0 授权流程

一、强制精确匹配并启用 PKCE

python
import secrets, hashlib, base64

# 生成 PKCE code_verifier 与 code_challenge
verifier = secrets.token_urlsafe(64)
challenge = base64.urlsafe_b64encode(
    hashlib.sha256(verifier.encode()).digest()
).rstrip(b"=").decode()

# 授权请求携带 challenge,令牌请求携带 verifier
auth_params = {
    "response_type": "code",
    "client_id": "app-client",
    "redirect_uri": "https://app.example.com/callback",  # 必须精确匹配注册值
    "code_challenge": challenge,
    "code_challenge_method": "S256",
}