若授权服务器对 redirect_uri 采用前缀匹配或通配校验,攻击者可构造恶意回调地址截获授权码(Authorization Code),进而换取受害者访问令牌。
![]()
一、强制精确匹配并启用 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",
}