Cloudflare & IP headers bezoekers

Pagina: 1
Acties:

  • Saven
  • Registratie: December 2006
  • Laatst online: 15:07

Saven

Administrator

Topicstarter
Hi all,

Ik zit met het volgende. Onze PHP webapplicatie draait op Nginx achter Cloudflare. Alle requests komen binnen alsof Cloudflare onze applicatie bezoekt; het is immers een reverse proxy.

Anyway, Cloudflare stuurt het client IP adres (van de daadwerkelijke bezoeker) mee in de headers X-Forwarded-For en CF-Connecting-IP.

De X-Forwarded-For is eigenlijk als ik me niet vergis industry standard. Maar iedereen kan die header faken, dus we controleren of het inkomende IP van Cloudflare is en gebruiken dan de X-Forwarderd-For als IP-adres van de bezoeker. Dan weten we dat we die header in principe moeten kunnen vertrouwen.

Echter: als ik de docs van Cloudflare (https://support.cloudflar...dle-HTTP-Request-headers-) bekijk zie ik bij X-Forwarded-For staan:
Maintains proxy server and original visitor IP addresses. If there was no existing X-Forwarded-For header in the request sent to Cloudflare, X-Forwarded-For has an identical value to the CF-Connecting-IP header
Dat betekent imo dat als Jantje zijn eigen X-Forwarderd-For spooft/instelt, dat dit in onze applicatie alsnog zijn gespoofde IP wordt gezien als 'echt ip' en heeft onze 'Trusted Proxies' PHP-module die controleert of het verkeer vanaf Cloudflare komt geen enkel nut?

Of is er niks aan de hand? We kunnen de applicatie ook ombouwen en de Cf-Connecting-IP header gebruiken, maar dat is imo een beetje tegen de standaarden in gaan. Alle grote open source libraries om requests af te handelen kijken ook alleen naar de X-Forwarded-For. Ook alle voorbeelden online om het originele Cloudflare bezoekers IP te tonen gaan uit van de X-Forwarded-For.

Is dit een security issue en moeten we switchen naar Cf-Connecting-Ip ? Of Checkt Cloudflare dit?

Ben benieuwd of iemand daar antwoord op kan geven. Ik neig een beetje naar het eerste, maar ik ben geen netwerk pro :)

Acties:
  • +1 Henk 'm!

  • ik222
  • Registratie: Maart 2007
  • Niet online
Als ik iets verder lees op de link die je zelf geeft zie ik:
If an X-Forwarded-For header was already present in the request to Cloudflare, Cloudflare appends the IP address of the HTTP proxy to the header:

Example:

X-Forwarded-For: 203.0.113.1,198.51.100.101,198.51.100.102
In the examples above, 203.0.113.1 is the original visitor IP address and 198.51.100.101 and 198.51.100.102 are proxy server IP addresses provided to Cloudflare via the X-Forwarded-For header.
Dus kortom je moet zorgen dat je de X-Forwarded-For header correct parsed en je dus het eerste adres gebruikt.

  • Saven
  • Registratie: December 2006
  • Laatst online: 15:07

Saven

Administrator

Topicstarter
ik222 schreef op donderdag 10 september 2020 @ 14:28:
Als ik iets verder lees op de link die je zelf geeft zie ik:


[...]


Dus kortom je moet zorgen dat je de X-Forwarded-For header correct parsed en je dus het eerste adres gebruikt.
ThanksI Ik zie dat de library dat inderdaad al doet. Nice :)