2011-07-20 31 views
99

Digamos que tengo un sitio web llamado a.com, y cuando se carga una página específica de este sitio, por ejemplo enlace de página, me gusta establecer una cookie para otro sitio llamado b.com, luego redirigir al usuario a b.com.Cómo configurar una cookie para otro dominio

Quiero decir, a la carga de a.com/link Quiero establecer una cookie para b.com y redirigir usuario a b.com.

Lo probé y el navegador realmente recibió la cookie de a.com/link, pero no envió esa cookie en la solicitud de redirección al b.com. ¿Es normal?

¿Podemos establecer cookies para otros dominios?

+0

Tenga en cuenta que si utiliza parámetros de URL para establecer cookies en b.com, cualquiera podría forzar cualquier valor de cookie en b .com desde cualquier sitio web. – Julien

+0

utiliza un iFrame de b.com que establece una cookie;) – KDOT

Respuesta

82

No puede establecer cookies para otro dominio. Permitir esto presentaría un enorme defecto de seguridad.

Debe obtener b.com para establecer la cookie. Si a.com redirigir al usuario a b.com/setcookie.php?c=value

El guión setcookie podría contener lo siguiente para establecer la cookie y redirigir a la página correcta en b.com

<?php 
    setcookie('a', $_GET['c']); 
    header("Location: b.com/landingpage.php"); 
?> 
+0

Sin embargo, a.com puede insertar los mismos datos en forma de encabezado al redireccionar a b.com, ¿no es así? ¿Por qué esto no presenta un defecto de seguridad? – Coder

+1

@Coder, la función setcookie dará como resultado que se envíe un encabezado de cookie al navegador desde b.com. a.com no puede enviar un encabezado de cookie desde b.com. – qbert220

+0

sí, esto es muy inseguro, pero funciona. Si el OP posee a.com y b.com y la cookie es bastante trivial, entonces tal vez esté bien. – rocketsarefast

4

No puede. Eso sería un riesgo de seguridad desagradable.

4

Configuración de las cookies de otro dominio no es posible.

Si desea pasar datos a otro dominio, puede codificar esto en la url.

a.com -> b.com/redirect?info=some+info (and set cookie) -> b.com/other+page 
+2

establecer una cookie de sesión desde una url es un riesgo de seguridad. Las URL generalmente se registran y permitirían a un atacante robar una sesión de usuario –

12

Probaly puedes usar Iframe para esto. Facebook probablemente usa esta técnica. Puede leer más en este here. Stackoverflow utiliza una técnica similar, pero con almacenamiento local HTML5, más sobre esto en su blog

+1

iframe funcionó perfectamente para mi solución, simplemente incluya los valores en la url como una solicitud de obtención normal y responda desde el servidor con los valores de cookie –

33

Similar a la respuesta superior, pero en lugar de redirigir a la página y viceversa, lo que provocará una mala experiencia de usuario, puede establecer una imagen en dominio A.

<img src="http://www.example.com/cookie.php?val=123" style="display:none;"> 

Y luego el dominio B que es example.com en cookie.php que tendrá el siguiente código:

<?php 
    setcookie('a', $_GET['val']); 
?> 

Hattip a Subin

+3

Gracias por hacer referencia a mi blog :) – Subin

+0

buen hack ... :) – sotn

+3

Tenga en cuenta que es probablemente una muy mala idea. Está eludiendo las protecciones de cookies muy intencionales al permitir básicamente que cualquier persona envíe una solicitud GET elaborada para establecer esa cookie con el valor que desee. No sé qué HACER con esa cookie, pero espero que no implique un saldo bancario. –

2

En caso de que tenga a.my-company.com y b.my-company.com en lugar de solo a.com y b.com, puede emitir una cookie para el dominio .my-company.com, que será aceptada y enviada a ambos dominios.

+0

¿es posible crear una cookie en a.my-company.com para b.my-company.com? –

1

ver RFC6265:

El agente de usuario va a rechazar las cookies menos que el atributo de dominio especifica un margen para la cookie que incluiría el servidor de origen . Por ejemplo, el agente de usuario aceptará una cookie con un atributo de dominio de "example.com" o de "foo.example.com" de foo.example.com, pero el agente de usuario no aceptará una cookie con un Atributo de dominio de "bar.example".com" o de 'baz.foo.example.com'

NOTA:. Por razones de seguridad, muchos agentes de usuario están configurados para rechazar atributos de dominio que corresponden a 'sufijos públicas' Por ejemplo, algunos agentes de usuario se rechazar los atributos de dominio de ".com" o "co.uk". (Véase la Sección 5.3 para obtener más información.)

Pero la solución anterior se mencionó con obras de imagen/iframe, aunque no es recomendable debido a su inseguridad.

Cuestiones relacionadas