sesiones - Inicio de sesión de sitio multi PHP
php eliminar cookies cerrar sesion (5)
¿Soy solo yo o suena como tu CSRFing con tu técnica usando imágenes que funcionan en Firefox?
Un enfoque interesante, aunque espero que no te expongas a una amenaza de seguridad allí.
Actualmente estoy trabajando en un proyecto que abarca varios dominios. Lo que quiero es que el usuario pueda iniciar sesión en un sitio e iniciar sesión en todos los demás al mismo tiempo.
La sesión de los usuarios se almacena en la base de datos, las cookies que establezco en cada dominio contienen la identificación de la sesión.
Entonces, básicamente, cuando un usuario inicia sesión en example.com, se crea una cookie con su id de sesión, los datos de la sesión se almacenan en la base de datos. Una vez hecho esto, se debe crear una cookie en todos los demás dominios con esta identificación única de sesión para que, a medida que el usuario vaya de un sitio a otro, inicie sesión automáticamente.
Ahora he encontrado una forma de hacerlo en Firefox (usando etiquetas de imagen que ejecutan scripts PHP en los otros dominios, básicamente creando las diferentes cookies en los diferentes dominios) pero este método no funciona en IE (no se ha probado Opera o Safari, etc. aún).
¿Alguien tiene alguna idea sobre cómo puedo hacer que esto funcione en IE?
No estoy seguro de si es una buena sugerencia en este punto de su desarrollo, pero definitivamente debe mirar el inicio de sesión único si desea hacerlo de la manera "correcta".
No he hecho esto por mí mismo, pero creo que vas por el camino correcto. Probablemente haría lo mismo, excepto que en lugar de una imagen usaría un archivo Javascript. Se generaría en el lado del servidor y actualizaría las cookies en el lado del cliente.
Posiblemente soy un poco tonto, pero ¿no podría establecer las cookies para cada nombre de dominio al iniciar sesión? Entonces, en lugar de que ellos tengan una cookie cuando inician sesión en el Sitio A, tienen cinco o la cantidad de sitios que tiene.
setcookie(A, $sessid, expire, path, domainA.com);
setcookie(B, $sessid, expire, path, domainB.com);
setcookie(C, $sessid, expire, path, domainC.com);
setcookie(D, $sessid, expire, path, domainD.com);
Eche un vistazo a mi pregunta Cross Domain User Tracking .
Lo que debe hacer es agregar otro encabezado HTTP a la "imagen".
La cotización de las variables de sesión se pierde si usa FRAMESET en Internet Explorer 6 :
Puede agregar un encabezado de política compacto P3P a su contenido secundario, y puede declarar que no se realizan acciones maliciosas con los datos del usuario. Si Internet Explorer detecta una política satisfactoria, Internet Explorer permite que se establezca la cookie.
Una política compacta simple que cumple este criterio sigue:
P3P: CP = "CAO PSA NUESTRO"
Este ejemplo de código muestra que su sitio le brinda acceso a su propia información de contacto (CAO), que cualquier información analizada es solo "pseudoanalizada", lo que significa que los datos están conectados a su persona en línea y no a su identidad física (PSA ), y que sus datos no se suministren a ninguna agencia externa para que esas agencias la utilicen (NUESTRA).
Puede establecer este encabezado si usa el método Response.AddHeader en una página ASP. En ASP.NET, puede usar el método Response.AppendHeader. Puede usar el complemento de administración de IIS (inetmgr) para agregarlo a un archivo estático.
Siga estos pasos para agregar este encabezado a un archivo estático:
- Haga clic en Inicio, haga clic en Ejecutar, y luego escriba inetmgr.
- En la página de navegación izquierda, haga clic en el archivo o directorio apropiado en su sitio web al que desea agregar el encabezado, haga clic con el botón derecho en el archivo y luego haga clic en Propiedades.
- Haga clic en la pestaña Encabezados HTTP.
- En el cuadro de grupo Encabezados HTTP personalizados, haga clic en Agregar.
- Escriba P3P para el nombre del encabezado, y luego para la cadena de política compacta, escriba CP = ..., donde "..." es el código apropiado para su política compacta.