2009-09-07 26 views
5

Imagine dos páginas web, ambas vistas usando https. Ellos residen en diferentes dominios.http_referer perdido usando https

¿Cómo puedo (razonablemente) asegurar que alguien que llegue a mi página venga a través de un hipervínculo que reside en otro dominio (específico)? Solo quiero permitir el tráfico desde ese dominio. Cualquier idea sobre la mejor manera de lograr esto sería apreciada.

He intentado mirar el HTTP_REFERER, pero aparentemente no se está enviando en este caso. Sé que el HTTP RFC especifica que no se envíe la información de referencia desde https -> http, pero ¿esto también se aplica a https -> https en dominios o certs ssl?

Mi dominio se ejecuta en ASP.NET si es importante. No tengo control sobre el dominio de origen.

Gracias.

+4

Referer es fingido fácilmente, no lo recomiendo –

+3

Sé que la referencia puede ser falsa. Entiendo que no puedo mantener a todos afuera. Necesito una solución que funcione lo suficientemente bien como para mantener la curiosidad y evitar que la gente marque el sitio de destino, forzándolos a llegar a través del sitio que no tengo control. – BlueRonin

Respuesta

5

Sea o no los RFC permiten el envío de HTTP_REFERER o no, usted encontrará que muchos clientes web y/o los apoderados o otras pasarelas relacionadas con la privacidad entre éste y el servidor va a eliminar o falsificar la HTTP_REFERER en el encabezado, desgarrando la mayoría del esquema de "autenticación" basado en http_referer parcialmente funcional en el mejor de los casos.

Si tiene alguna colaboración con el custodio del primer servidor https, puede aceptar pasar un código hash basado en time + something_else en las solicitudes a su servidor. Al verificar el hashcode en su extremo, sabrá que su visitante https vino del otro servidor [muy recientemente].

6

Elaborando la respuesta de mjv: debe poner HMAC (RFC 2104) en la URL. Tener un secreto compartido entre los dos servidores, y hacer que el servidor de origen genere enlaces del formulario/timestamp/hmac/path. El hmac debe verificarse desde hmac (key, timestamp + path), para que diferentes imágenes generen diferentes hmacs. El servidor de destino puede decidir si la marca de tiempo es lo suficientemente joven para originarse de una redirección.

Puede restringir aún más eso al poner la dirección IP del cliente en el hmac, lo que requiere que el mismo cliente que recibió el URL también lo resuelva. Sin embargo, eso puede ser propenso a errores en presencia de proxies HTTP que solo procesan http y no https o viceversa.

0

Si no tiene control sobre el sitio de referencia no tiene suerte.

Oler la referencia si es posible, y si no está presente arrojar una página de aterrizaje que dice "haga clic aquí ir al sitio A para que pueda volver aquí".

Además, dedique un tiempo a trabajar en un método más sólido para acceder a su sitio "seguro".

+0

Ese es mi problema, el hecho de que la referencia no está presente cuando alguien llega del sitio A. Necesito que aparezca el error "ir al sitio A" para todos los demás. En cuanto al acceso al sitio, el sitio A dirige a las personas a mi página de inicio de sesión. No pueden hacer mucho sin un inicio de sesión que no sea admirar el trabajo de mis diseñadores gráficos. – BlueRonin

Cuestiones relacionadas