Visual RFC.
ALL RFCs / RFC 9700
Read the RFC ↗
RFC 9700 / ATTACKS & DEFENSES

Open redirection

19

A URL on a trusted client or authorization server can bounce the browser to an arbitrary phishing or exfiltration endpoint.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

RFC 9700 · § 4.11DEFENSE
3 / 3
Open redirectionA URL on a trusted client or authorization server can bounce the browser to an arbitrary phishing or exfiltration endpoint. Current state: Continue only through a controlled handoff..Open redirectiontrusted-looking redirect endpointnext=evil.exampleclient.example/redirect?next=evilcompare / routeonward target blockedValidated callback
03
Continue only through a controlled handoff.

Exact callback matching remains necessary.

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
KEY POINT

Control the destination of every redirect.

  • Clients MUST NOT expose open redirectors. Allow intended destinations or authenticate request origin and integrity.
  • Authorization servers MUST NOT auto-redirect invalid client_id and redirect_uri combinations.
  • Servers MUST take phishing precautions, authenticate first with the silent-authentication exception, and SHOULD auto-redirect only to trusted URIs.
DETAILS

Even a correctly registered redirect URI can be a phishing destination. Errors, consent denial, or silent authentication can otherwise turn an authorization server into a credible-looking bounce point.

Read the RFC section ↗

Diagrams simplify the RFC. Read the linked sections for complete requirements.

Privacy
All chapters in this RFC
  1. OAuth overview
  2. Authorization code + PKCE
  3. Retire unsafe grants
  4. Prevent token replay
  5. Limit token privileges
  6. Authenticate the client
  7. Metadata, TLS & CORS
  8. The attacker model
  9. Redirect URI validation
  10. Referer header leakage
  11. Browser history leakage
  12. Authorization server mix-up
  13. Authorization code injection
  14. Access token injection
  15. Cross-site request forgery
  16. PKCE downgrade
  17. Leakage at resource servers
  18. Misuse of stolen tokens
  19. Open redirection
  20. 307 credential forwarding
  21. TLS termination & proxies
  22. Refresh token protection
  23. Client as resource owner
  24. Clickjacking
  25. In-browser messaging
RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗