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

Browser history leakage

11

Codes and tokens in visited URLs can remain in history, where someone with device access may find them.

Related RFCs and changes

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

DIAGRAM§ 4.3 ↗
RFC 9700 · § 4.3DEFENSE
3 / 3
Browser history leakageCodes and tokens in visited URLs can remain in history, where someone with device access may find them. Current state: Never navigate with access_token in the query..Browser history leakage○ ○ ○callback code / form_postVisited pageBrowser historybound single-use codeNo reusable token in the stored URL
03
Never navigate with access_token in the query.

Resource access should not distribute tokens through visited addresses.

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

Never put access tokens in URI queries.

  • Clients MUST NOT pass access tokens in URI query parameters.
  • Code replay prevention and transaction binding reduce the value of a code found in history.
  • Authorization code and form post responses can reduce front-channel credential exposure.
DETAILS

The implicit grant can also leave tokens in URL fragments in browser history. The drawing represents local history access; it does not imply any website can read the browser’s full history.

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 ↗