w3schools sesiones print internet create cookie cache php internet-explorer web-applications cookies

php - sesiones - IE10 compartiendo cookies en subdominios por defecto



print session php (4)

Acabo de encontrarme con este problema.

Aquí hay un enlace a alguien que está explorando este error / problema: Cookies con y sin el Dominio Especificado (inconsistencia del navegador)

Esto también podría estar relacionado: Conjunto de cookies para subdominio, pero las Herramientas del desarrollador de IE muestran cookies en el dominio raíz. ¿Qué me estoy perdiendo?

Mi conclusión es que cuando se configura una cookie desde un dominio raíz no www ( http://sites.com ), en IE se considera una cookie comodín para todos los subdominios. Chrome y Firefox no muestran este comportamiento: asocian un conjunto de cookies de un dominio raíz que no es de www como asociado solo con esa raíz.

Codifiqué sitios de ejemplo utilizando formularios web .net, IIS y mi archivo de hosts. Tenía 3 sitios: a.site.com, b.site.com y site.com. Todos servían galletas con el mismo nombre. Llamémoslo "ShoppingCart".

Puede establecer varias propiedades en las cookies, incluido el dominio al que debe asociarse la cookie. Dejé esta propiedad para ser definida / dejada sin definir por .net. Cuando Chrome recibió la cookie de cada sitio, mostró que el dominio de la cookie era explícitamente del dominio que figura en la barra de direcciones del navegador. En IE este no fue el caso. IE trata la cookie de http://sites.com como definida como ".sites.com" y de acuerdo con el RFC para cookies, esto significa que es accesible desde todos los subdominios.

También en IE, si se configuran varias cookies con el mismo nombre, IE las devuelve al servidor en el orden en que se configuraron. Entonces, si visito primero http://sites.com y luego http://a.sites.com y luego actualizo, IE ve la cookie de http://sites.com como una cookie válida para enviar al servidor en es la solicitud para http://a.sites.com que se envía junto con la cookie para http://a.sites.com , excepto que la cookie para http://sites.la es la primera en la lista.

En .net, por lo que he visto, a las cookies generalmente se accede por nombre de clave y no por índice. Entonces, cuando el código del lado del servidor intente acceder al valor de la clave llamada "ShoppingCart", tomará el valor del primer sitio que configuró el valor de la cookie, aquí sería http://sites.com .

En resumen, no use dominios que no sean www cuando tiene subdominios que comparten todos los mismos nombres de clave de cookie porque, mientras Chrome / Firefox maneja la asociación de dominios como lo esperaría, IE causa un comportamiento defectuoso.

Editar--

Solo para aclarar a cualquiera que lea esto, estaba usando IE10 para explorar este problema.

IE10 parece manejar las cookies y los subdominios de manera diferente a otros navegadores importantes (IE8, IE9, Firefox, Chrome, Safari).

Usamos subdominios ampliamente para entornos de prueba, por ejemplo:

  • user1.devel.example.com
  • user2.devel.example.com
  • qa.example.com

Y nuestro entorno de producción se encuentra en la cima, por ejemplo, example.com (y técnicamente también en www.example.com).

Usamos la función php setcookie($name, $value, $expires) ingenuamente (no se especifica una ruta o dominio explícitos) para establecer una cookie y luego eliminar las cookies (cuando el usuario cierra la sesión) asignando una cadena vacía al valor. Esto siempre ha funcionado bien, y cada subdominio único utiliza sus propias cookies.

IE10 ahora "comparte" la cookie que se estableció en el TLD con todos los subdominios. El síntoma inicial que observamos fue que nadie podía salir del subdominio. Hemos observado algunas cosas:

  • Aunque comparte el valor, ningún subdominio puede borrar la cookie.
  • Cuando el TLD borra la cookie, también se elimina inmediatamente de todos los subdominios.

¿Alguien más ha observado un comportamiento similar al de cómo IE10 almacena / aplica las cookies en relación con los subdominios? ¿Hay alguna solución alternativa, aparte de ser explícita sobre a qué dominio se aplica la cookie al enviar el encabezado inicial de Set-Cookie?


Estoy teniendo el mismo problema en IE 11.0.9600 para la cookie de sesión php: Internet Explorer está enviando cookies de dominio raíz a todos sus subdominios. Para resolver esto, almaceno el nombre de dominio en una variable de sesión:

$_SESSION[''URL''] = str_replace(''www.'', '''', $_SERVER[''HTTP_HOST'']);

Luego para cada solicitud, reviso la variable de sesión:

if ( str_replace(''www.'', '''', $_SERVER[''HTTP_HOST'']) != $_SESSION[''URL'']) { session_regenerate_id(true); $_SESSION = array(); $_SESSION[''URL''] = str_replace(''www.'', '''', $_SERVER[''HTTP_HOST'']); }

Luego, cuando pasemos del dominio raíz al subdominio, no estaremos "en" la misma sesión.



Una forma súper fácil de solucionar esto si tiene varios sitios PHP en un dominio.

Por ejemplo, si tiene Wordpress en la raíz (example.com) y tiene una aplicación PHP personalizada en el subdominio (a.example.com), ya sea dentro de su aplicación o Wordpress, debe configurar un SessionName diferente.

Agregue session_name () antes de su session_start () que debería dar dos nombres separados a la sesión y, por lo tanto, no debe coincidir.

session_name(''AppSession''); session_start();

Fácil.