2008-12-31 29 views
6

Parece que me he encontrado con un problema con Internet Explorer 7. Tengo una página html que tiene enlaces a archivos en otro servidor. El servidor al que estoy enlazando comprueba el referente de la solicitud y, si el referente es válido, permite el acceso al recurso. Funciona bien en Firefox 2 y 3 (como el servidor en el que se encuentra mi página html es un referenciador válido) pero en Internet Explorer no funciona, el otro servidor me niega el recurso (genera un error http 403). Estaba haciendo una búsqueda y tropecé con este http://support.microsoft.com/kb/178066 y he probado la página html tanto en https como http y lo mismo para el servidor al que me estoy conectando pero no obtengo nada de Internet Explorer. ¿Qué puedo hacer para evitar esto?Internet Explorer http referer problema

gracias

+0

¿tiene una url podemos probar? – scunliffe

Respuesta

3

Es posible que desee utilizar un mecanismo diferente de todos modos. Las referencias son fácilmente falsificadas. Verificar las referencias realmente no es una buena solución de seguridad, y si te van a causar dolores de cabeza como este, tal vez quieras encontrar otra manera.

Por ejemplo, el servidor que genera la primera página podría agregar un token de autorización a las URL del segundo servidor, y el segundo servidor podría verificar que los tokens sean válidos. De esta forma, todos los detalles están bajo su control, y el único comportamiento del navegador con el que cuenta es que la URL completa se envía al segundo servidor.

+0

en realidad, me olvidé de mencionar esta parte, pero está utilizando tokens de autorización, cada url tiene el token de autorización correspondiente anexado. – willz

+2

si ya tiene un token de autenticación, ¿por qué molestarse con la comprobación del referente en absoluto? –

-3

cortafuegos deshabilitar, y anti-virus/o análisis anti-spyware y ver si eso ayuda. Sé que esto puede sonar troll, pero personalmente he visto muchos casos en los que el problema desapareció milagrosamente cuando se tomó este consejo.

Tienden a tener una idea demasiado entusiasta a veces de lo que es "Seguro", y romper el comportamiento del navegador en el progreso. (Si tiene AVG y tiene problemas con el correo electrónico (pop3), apague AVG y mire mágicamente el correo electrónico volver al estado de trabajo)

+0

Si lee el artículo kb vinculado verá que este es un problema conocido con IE, no está influenciado por otro software. – Sparr

+0

¡Ah, no, el artículo kb se queja sobre cruzar límites de seguridad, está claro desde el OP que el problema incluso ocurre en seguridades del mismo nivel y, por experiencia, he visto software AV manipular y causar este comportamiento! –

+0

(yo * he * usado referencias en IE, en http: // * desnudo y * hice que funcionaran, así que no estoy exactamente inventando esto ...) –

13

¿Cómo está "llegando a" el archivo en cuestión?

SI USTED ESTÁ UTILIZANDO JAVASCRIPT para acceder al archivo, IE FALLARÁ.

IE ha tenido un gran error desde el principio de esto.

e.g. document.location.href = 'myNewPage.html'; //FAILS to pass referer in IE 

Bug #421 over on Web Bug Track

no se fijará en IE8, ya sea!:-(

+0

es simplemente una etiqueta de anclaje html simple. no javascript – willz

2

he resuelto que, incluyen este código en todas las páginas de su proyecto

session_start(); 
if($_SERVER['SERVER_PORT'] == 443) 
    $http = 'https://'; 
else 
    $http = 'http://'; 

$adress = $http.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

$_SESSION['referer'] = $_SESSION['current_page']; 
$_SESSION['current_page'] = $adress; 
$_SERVER['HTTP_REFERER'] = $_SESSION['referer']; 
1

no estoy usando IE7 así que no puedo comprobar esto .. pero supongo que esto debería funcionar sin problemas:

<script type="text/javascript"> 
     document.location= "www.your-server.com/your_page.html?referrer=" + document.location.href; 
</script> 

Y que en el segundo servidor se puede comprobar el valor del parámetro de referencia en lugar de depender de si el navegador envía la URL de referencia o no

.