2009-08-31 9 views
5

Ok, estoy usando un lápiz para equilibrar la carga. Mis servidores Apache ven la IP remota como la IP del equilibrador de carga. Necesito el servidor apache para poder ver la dirección IP del cliente por varias razones. Puedo usar X-Forwarded-For para sacarlo de una página no encriptada, pero no es parte de una página SSL ...ajax/ssl/X-Forwarded-For

Así que, sin conocer Ajax, me pregunto. ¿Podría usar ajax para sacar el X-Forwarded-For de una página no encriptada, y configurarlo como una variable en el lado del cliente? Sé que es posible, solo me pregunto si alguien ha hecho esto, y esto causa un error de seguridad en el navegador.

Pensé que podría redirigirlos a una página que no sea SSL, luego colocar el IP en una cookie y luego volver a la página SSL, pero creo que también es divertido.

De todos modos, otra forma de obtener la ip para el script también funcionará. Intenté http://stderr.net/apache/rpaf/, pero tampoco tengo conocimiento de la IP.

Respuesta

0

AJAX está limitado por la misma política de origen, y los diferentes protocolos se consideran orígenes diferentes, por lo que no podrá realizar la solicitud HTTP AJAX desde la página HTTPS.

Intentarlo por otros medios podría hacer que los navegadores adviertan sobre contenido mixto seguro e inseguro. Poner IP en una cookie en la página HTTP (idealmente firmado o almacenado en la sesión del servidor al que hace referencia la cookie) funcionaría, pero no será tan seguro como leer la sesión IP real de SSL (ya que el atacante podría manipular HTTP cookies, y no puede establecer una cookie de solo HTTPS).

Otra solución a esto es finalizar SSL en el equilibrador de carga y reenviarlo como tráfico HTTP a Apache.

Otro enfoque sería utilizar el equilibrio de carga de nivel inferior, NAT, que conserva la dirección de origen.