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

TLS termination & proxies

21

A TLS-terminating proxy becomes part of the security boundary. Forwarded headers and the internal hop need protection too.

Related RFCs and changes

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

RFC 9700 · § 4.13DEFENSE
3 / 3
TLS termination & proxiesA TLS-terminating proxy becomes part of the security boundary. Forwarded headers and the internal hop need protection too. Current state: Make decisions using authenticated facts..TLS termination & proxiesClientTLS proxyBackendTLSforged security headerauthenticatedverified contextsanitized headerstrust establishedThe proxy-to-backend link is a separate security hop.
03
Make decisions using authenticated facts.

The application receives security context only through its trusted proxy boundary.

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

Sanitize headers. Secure the internal hop.

  • Proxies MUST sanitize inbound requests to preserve authenticity and integrity of security-relevant headers.
  • Do not trust client-supplied forwarded IP, client certificate, or token-binding information as proxy-authenticated facts.
  • The proxy-to-application link MUST prevent eavesdropping, message injection, and replay, with authenticated communicating entities.
DETAILS

A spoofed X-Forwarded-For value can defeat an IP-based policy if the app interprets it as trusted. Outside TLS does not authenticate attacker-controlled header contents.

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 ↗