Foros del Web » Programando para Internet » PHP »

Susto: entro en backoffice sin loguearme

Estas en el tema de Susto: entro en backoffice sin loguearme en el foro de PHP en Foros del Web. Hola a todos. Hoy me he llevado un susto muy gordo. Resulta que estoy (con Firefox) logueado en un backoffice de una web que he ...
  #1 (permalink)  
Antiguo 09/03/2005, 03:40
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
Susto: entro en backoffice sin loguearme

Hola a todos.

Hoy me he llevado un susto muy gordo. Resulta que estoy (con Firefox) logueado en un backoffice de una web que he programado. Sin cerrar esa ventana, abro otra y voy al backoffice de una web distinta que también programé yo. La sorpresa ha sido que no me ha pedido los datos de login, ha entrado directamente.

Los dos backoffices usan una variable de sesión para comprobar que el usuario se ha validado. Esta variable de sesión se llama igual en las dos webs. ¿Puede tener esto algo que ver?

Os agradezco de antemano la respuesta, estoy un poco asustado con esto.

Mario.
  #2 (permalink)  
Antiguo 09/03/2005, 04:46
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 12 años, 9 meses
Puntos: 1
Yo creo que sí.

Si usas la misma cookie (mismo nombre y valor) para validar a un usario en distintas páginas mientras siga activa la cookie te va a entrar sin ningún problema en la otra... Al menos eso creo.
  #3 (permalink)  
Antiguo 09/03/2005, 05:33
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
Pero no es con cookies, es con variables de sesión. ¿También pasa con las variables de sesión?

Mario.
  #4 (permalink)  
Antiguo 09/03/2005, 06:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por mariogl84
Pero no es con cookies, es con variables de sesión. ¿También pasa con las variables de sesión?

Mario.
Pero .. tu como propagas el SID en tus sesiones? .. recuerda que se puede hacer en cookies y por el URL .. Las sesiones tienen su tiempo de expiración .. así que según se combine esa configuración podrías obtener esos resultados. Sobre todo si de una aplicación a otra entras de un link de una que apunte a otra ..

Un saludo,
  #5 (permalink)  
Antiguo 09/03/2005, 07:14
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
Creo que me estoy liando un poco. La validación del usuario la controlo mediante una variable de sesión que se pone a verdadero o a falso. La pantalla de login comprueba el valor de esta variable de sesión, si está a falso presenta el formulario de entrada de los datos de login, si está a verdadero entra en el backoffice.

Y el caso ha sido así: Estaba validado en un backoffice, he abierto una nueva ventana del Firefox, he accedido al login de otro backoffice de otra web distinta (aunque alojada en el mismo servidor), y ese segundo login me ha tomado como validado y me ha metido en el backoffice.

Mario.
  #6 (permalink)  
Antiguo 09/03/2005, 07:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ya te mencioné e insisto que -debes- conocer como propaga el SID tu configuración de PHP y como lo hace tu apliación...

Si no conoces que es el SID, pregunta .. o lee la documentación oficial de php: www.php.net/session .. Pero, debes saber que "la magia" de que una sesión funcine y como se va comportar esta .. depende de la propagación del SID .. así que es necesario conocer todo esto .. sino luego vienen los "sustos".

También ayudaría ver el código de tus dos login de tus dos aplicaciones.

Un saludo,
  #7 (permalink)  
Antiguo 09/03/2005, 12:36
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
Bueno, creo que me he dado cuenta del fallo garrafal. Da igual cómo se propague el SID, es que son dos aplicaciones en desarrollo que... están en el mismo dominio . Así que supongo que ya está todo explicado, ¿no?

Muchas gracias por las respuestas, Cluster y Koden.

Mario.
  #8 (permalink)  
Antiguo 09/03/2005, 13:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por mariogl84
Bueno, creo que me he dado cuenta del fallo garrafal. Da igual cómo se propague el SID, es que son dos aplicaciones en desarrollo que... están en el mismo dominio . Así que supongo que ya está todo explicado, ¿no?

Muchas gracias por las respuestas, Cluster y Koden.

Mario.
Pues .. no .. no me queda claro. Podrías explicar tu conclusión y en que afecta al uso de sesiones?

Te lo comento por qué yo trabajo con dos aplicaciones distintas .. corren en el mismo servidor .. las tengo bajo el mismo dominio y usan el mismo sistema de login . .cada una crea sesiones diferentes para cada acceso de cada cliente .. aunque en el fondo contienen la misma información .. una sesión es única para el cliente que las crea. Eso sí, una sesión va asociada al "cliente" que las crea por el SID (por eso es necesario "propagarlo" ya sea en cookies o por el URL).

Como un método de propagación del SID son las cookies .. una cookie del mismo "domino" puede accederlo el mismo domino . pero para eso tienen que tener el mismo SID .. La definición de la cookie que crea PHP con el uso de sesiones se puede configurar como de tiempo de expiración "0" para que sea de "sesión" .. es decir, que muera al cerrar la última ventana de tu aplicación. Si abres otra aplicación y esa cookie ya no existe (con el SID en ella) .. iniciaras una nueva sesión, ahora .. si tu cookie dura N tiempo .. lo que vas hacer es retomar la sesión anterior .. (mientras la sesión siga "vigente" según define: session.gc_maxtimelife de tu php.ini)

Un saludo,
  #9 (permalink)  
Antiguo 09/03/2005, 14:05
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
Buff... me lío. A ver, pongo aquí la configuración del php del servidor respecto a lo que hablamos (no tengo acceso a cambiarla):

Directive Local Value Master Value
session.cookie_lifetime 0 0
session.gc_maxlifetime 1440 1440
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off

Yo hasta ahora no he usado el SID para nada, así que supongo que éste se propaga automáticamente (¿es así o me equivoco?). El caso es que creo que con el Firefox, si abro una segunda ventana sin cerrar la primera, sigue la misma sesión.

Por ejemplo: entro en un phpmyadmin, me logueo y al rato cierro la ventana. Si no he cerrado todas las ventanas del Firefox, puedo abrir una nueva, y cuando vuelva al phpmyadmin estaré logueado sin tener que meter los datos. Entonces, supongo que si yo estoy en una aplicación y abro otra ventana del Firefox (y repito tanto Firefox porque con el IE no me ocurre), sigo permaneciendo en la misma sesión, ¿pueden ir por ahí los tiros? Es una conclusión precipitada de un desconocedor de la materia...

Mario.

Última edición por mariogl84; 09/03/2005 a las 14:06
  #10 (permalink)  
Antiguo 14/03/2005, 06:16
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
Retomo este post, que se quedó un poco abierto.

He estado leyendo sobre sesiones en este foro y en varios sitios más, y aún no tengo claro cuándo tengo que controlar yo la propagación del SID y cuándo no. Y tampoco qué influye eso en el caso que se comentaba en este post.

Gracias.

Mario.
  #11 (permalink)  
Antiguo 14/03/2005, 07:54
 
Fecha de Ingreso: diciembre-2004
Mensajes: 128
Antigüedad: 13 años
Puntos: 0
¿No sera el navegador que almacena el loggin de forma transparente? Te digo pq el navegador Opera que yo uso, almacena los datos del loggin para la pagina, o para el seervidor, y cuando uno entra en esas paginas/servidores con apretar una combinacion de teclas (control+enter) te logueas. Quizas, solo quizas el FireFox lo hace automaticamente con el servidor. Habria que ver en la configuracion de éste.
  #12 (permalink)  
Antiguo 14/03/2005, 08:53
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
No, el navegador me pregunta si quiero guardar la contraseña la primera vez que entro en un sitio, pero no guarda el login automáticamente.
  #13 (permalink)  
Antiguo 14/03/2005, 10:53
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Me meto sin leer todo.
Si usas las sesiones en un mismo dominio, y no aclaras un nombre diferente, o el lugar donde las guardas, obviamente va a ser la misma sesion.
La sulucion es ponerle un nombre diferente, y un lugar diferente donde guardarlas:
session_save_path('MiDir');#Dir que guaradar las sesiones, en el mismo nivel de directorios.
session_name('Sitio1-Admin'); #Asi las llamas, cambiale esto en casa sitio.
session_start();#Ahora estas listo para inicializarlas-

Esto te tomara unicamente las sesiones que sean Sitio1-Admin, por lo que si en otro sitio la llamas diferente, no se pisaran.
Aclaracion: El dir MiDir tiene que tener permisos de escritura.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #14 (permalink)  
Antiguo 14/03/2005, 11:22
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
yo creo q deberias ver como hacer q la cookie sea valida solo desde la carpeta de la aplicacion hacia adentro, = como setcookie()
  #15 (permalink)  
Antiguo 15/03/2005, 10:07
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
Pues sí, supongo que el problema está en no especificar otro nombre y lugar para las sesiones.

Gracias a todos por vuestras respuestas.

Mario.
  #16 (permalink)  
Antiguo 15/03/2005, 12:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Según esto .. el SID lo propagas el COOKIES .. por eso "ni conocías" de su existencia ..

session.use_cookies On On

No sé si ya a estas alturas ya conoces que hace el SID .. pero en su base (te comento) es el Identificador único de sesión .. es el que guarda la relación entre el "cliente" y el "servidor" (y sus datos particulares que usa que són únicos para el que lo inicia). Por eso ese "SID" es único y de alguna forma "aleatorio" .. no es un n° secuencial .. así podríamos retomar una sesión en otro cliente comodamente.

El SID es necesario que se propague entre el cliente y el servidor para que en todo momento "PHP" sepa que "datos" ha de entregarle al cliente que los pide y cuales son. Ese SID puedes dejar a PHP que cree una cookie y el la lea automáticamente. Por supuesto .. si esa cookie no se crea .. el SID no existirá y se perderá ese "enlace" entre el cliente y el servidor .. pese que los datos puedan seguir activos en el servidor .. el "nombre" por el cual "recuperarlos" no los tendrás ya.

También puedes propagar el SID en el URL .. como una variable más que añadir a todas las que uses tu en tu aplicación .. Pero eso implica que lo tendrás que hacer "a mano" en todo link que hagas .. en todo redireccionamiento (javascript o vía PHP) .. etc. Pero .. PHP tiene la directiva session.use_trans_sid .. que si está a ON automáticamente "reescribe" ciertos tags de HTML (como los que se indican en url_rewrite_tags) para añadir esa variable más que propagar el SID .. Pero, esto no lo hace en algunos casos .. como en redireccionamientos javascript o en header("Location ...") y algunos casos más.


Esto sería como funciona el dichoso "SID" que es la Base de todo esto de las sesiones. .. Si tienes problemas con el .. lo primero es "verlo" y ver que sucede con el según interactuas con tu aplicación o cuando "saltas" a la otra aplicación. Para eso tienes funciones como: session_id() para verlo .. Puedes hacer "echo" en scripts de una aplicación y de otra .. tomarte nota de dicho dato y verificar si al usar una u otra aplicación según tus condiciones de pruebas es el mismo SID o es diferente ..

En principio por lo que mencionas .. de alguna forma está usando el mismo al parecer. Así se podría ir evaluando que o por donde ver .. También sería bueno propagar el SID a mano por el URL (o automático por parte de PHP pero siempre por el URL) .. desactivar el uso de cookies para la propagación del SID (lo puedes hacer con ini_set() . hay una FAQ que menciona como usarlo) y así evaluar si es problema de cookies o de otro ambito.

Un saludo,
  #17 (permalink)  
Antiguo 15/03/2005, 12:54
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 15 años
Puntos: 20
Cluster, gracias por esta clarísima explicación.

Sí sabía de la existencia del SID, pero la verdad es que no sabía cómo manejarlo ni qué problemas me podía dar.

He comprobado mediante session_id() que, efectivamente, cuando cambio de aplicación está usando el mismo SID. Ahora me pilla sin mucho tiempo para hacer pruebas con esto, pero en cuanto saque un hueco llevaré a cabo lo que me habéis aconsejado y os contaré las conclusiones.

Gracias de nuevo.

Mario.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:56.