1. OAuth 2.0 Authorization Code Flow + PKCE 的测试要点,如何验证 state 参数防 CSRF?PKCE 的 code_challenge 验证测试?
请说明 OAuth 2.0 Authorization Code Flow + PKCE 的测试要点,如何验证 state 参数防 CSRF,以及 PKCE 的 code_challenge 验证?
- Authorization Code Flow 的流程
- state 参数防 CSRF 的验证
- PKCE 的 code_challenge 与 code_verifier
OAuth 2.0 授权码模式(Authorization Code Flow)是 Web 应用最安全的授权流程:用户授权后,授权服务器返回 code,客户端用 code 换取 access token。测试要点:验证授权请求是否带上随机 state 参数,服务端在回调时校验 state 是否与发起时一致,从而防 CSRF(防止攻击者诱导用户授权后把 code 劫持);验证 code 是否一次性使用、有时效、且绑定到客户端(客户端凭证校验)。PKCE(Proof Key for Code Exchange)用于提升授权码安全性,尤其适合移动端/SPA:客户端生成随机 code_verifier,派生 code_challenge 随授权请求发送,换取 token 时需提交 code_verifier,服务端校验其与 code_challenge 是否匹配,从而防止授权码被拦截后用于换取 token。测试应验证 code_challenge 的生成、code_verifier 的校验、以及 state 校验是否真实生效。
授权码 + PKCE 是防code劫持与CSRF的现代标准。测试应验证 state 与 code_challenge 的校验逻辑,而非仅看流程是否走通。