2011-06-11 11 views
14

Quiero leer el valor del valor de encabezado X-Forwarded-For en una solicitud.Leer X-Remitido-Para encabezado

He intentado

HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new char[] { ',' }).FirstOrDefault(); 

en C#.

¿O necesito dividir el encabezado por ":" y tomar la segunda cadena? Me pregunto porque, Wikipedia dice

El formato general del campo es: reenviado-X-A: cliente1, proxy1, proxy2

+1

¿Has probado tu código? – svick

+0

Iba a preguntar lo mismo :) –

+4

tu código es correcto, excepto que haría exactamente esto: HttpContext.Current.Request.Headers ["X-Forwarded-For"]. Split (','). FirstOrDefault(); – Tsar

Respuesta

15

El formato que se obtiene a cambio es client1, proxy1, proxy2

Así que divídelo con la coma, y ​​obtenga el primero para ver la ip de su cliente.

3

No olvide que X-Forwarded-For puede contener cualquier cliente que escriba allí. Puede contener inyección XSS o SQL adentro.

3

Si ayuda, esta es una manera sencilla de obtener la dirección IP del usuario, teniendo en cuenta la cabecera X_FORWARDED_FOR

var forwardedFor = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

var userIpAddress = String.IsNullOrWhiteSpace(forwardedFor) ? 
    Request.ServerVariables["REMOTE_ADDR"] : forwardedFor.Split(',').Select(s => s.Trim()).First(); 
Cuestiones relacionadas