Foros del Web » Programando para Internet » PHP »

Múltiples sesiones

Estas en el tema de Múltiples sesiones en el foro de PHP en Foros del Web. Holas! Comienzo por decir que sé que tal vez este tema debiera ir en el foro de Apache, pero como uso las sesiones de PHP ...
  #1 (permalink)  
Antiguo 17/08/2007, 10:27
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Múltiples sesiones

Holas!

Comienzo por decir que sé que tal vez este tema debiera ir en el foro de Apache, pero como uso las sesiones de PHP pensé que sería mejor aquí. En cuanto al tema en sí, les ruego disculpen mi ignorancia, aquí les cuento mis dudas...

Resulta que tengo varios sistemas hechos por mí en mi sitio web (aka, todos en el mismo host), varios que requieren loggeo para entrar a ciertas áreas, como administración o foro. Para todo esto uso las sesiones de PHP, las cuales me funcionan muy bien.

El problema ocurrió cuando yo me loggeaba por ejemplo en el foro, que tiene su propia base de datos y todo, y luego cuando cargaba otro de mis sistemas, ya me encontraba loggeada pese a que no me había identificado como usuario.

Esto no era problema pues se trataba de mí tan solo, hasta que por casualidad uno de los usuarios de mi foro tuvo acceso a uno de mis sistemas de administración de esta misma forma. Este usuario es de mi entera confianza, pero este hecho me dejó entrever la inseguridad de mis sistemas.

Entonces pensé "¿no se puede hacer que cada sistema tenga su propia sesión PHP?". Y por lo que comprobé pues no, no se puede. O sea, es una session_id por equipo, por pc de cliente, y no por sistema en el servidor.

La manera en que temporalmente he salvado esta fuga es agregando una variable en el arreglo de $_SESSION que identifica al sistema en el que actualmente se está loggeado. Así, el php pregunta si el usuario y el sistema son los correctos (antes preguntaba sólo si estaba loggeado, por ello permitía que entrara en cualquiera de los sistemas). Pero siguen existiendo problemas, pues, tanto con esta como con la antigua validación, al cerrar la sesión de usuario en un sistema, las cierra en todos los otros también. Lógico, pues es una sola sesión al final.

Por ello aun siento que los cambios que he hecho no son suficientes, y me gustaría saber si ustedes saben más sobre este tema. Tal vez sólo si me confirman que en un mismo servidor sólo puede haber una sesión me quedaré tranquila y veré cómo ingeniármelas, si es que ustedes, claro, no conocen ya alguna buena solución a esto. Pero por el momento estoy en la duda y en la documentación existente no he encontrado mayores referencias a este detalle de las sesiones en el servidor.

Muchas gracias de antemano!
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #2 (permalink)  
Antiguo 17/08/2007, 10:38
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Re: Múltiples sesiones

Buenas.

Yo solo te recomendaría no mezclar sistemas de usuarios y sistemas de administración. Te puedes llevar un disgusto cualquier día, y, en tu caso, menos mal que era alguien de confianza, que si no te hace un apaño.

Otra cosa que pudieras hacer, es no usar las mismas variables de sesión en los sistemas, así no tienes problemas de ese tipo.

Respecto a tu pregunta, la verdad es que nunca me lo he planteado, así que no sabría decirte.
  #3 (permalink)  
Antiguo 17/08/2007, 10:46
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Múltiples sesiones

Gracias, Bonez.

Pues no es que mezcle los sistemas, es la cosa esta de que hay una sola sesión por hosting lo que hace vulnerable mis sistemas :S...

Sobre usar distintos nombres de variable para las sesiones lo pensé igual. De hecho hice algo como esto:

Antes
Código PHP:
// Creando la sesión:
session_start();
$_SESSION["usuario"] = $el_usuario;
$_SESSION["login"] = 1;

//...
// Eliminado la sesión:
$_SESSION = array();
session_destroy(); 
Probando:
Código PHP:
// Creando la sesión:
session_start();
$_SESSION["sistema_1"]["usuario"] = $el_usuario;
$_SESSION["sistema_1"]["login"] = 1;

// Si hay otro sistema :
session_start();
$_SESSION["sistema_2"]["usuario"] = $otro_o_el_mismo_usuario;
$_SESSION["sistema_2"]["login"] = 1;

//...
// Eliminado la sesión del sistema 1: 
$_SESSION["sistema_1"] = array();

// Y eliminando la sesión del sistema 2:
$_SESSION["sistema_2"] = array();

// Pero... *** AQUÍ ESTÁ EL PROBLEMA *****:
session_destroy(); 
Allí me topo con el problema de siempre, porque el session_destroy() asumo que destruye la sesión completa, o sea, no distingue sistemas... ¿Es así realmente? ¿Qué opinas tú? ¿Puedo indicarle qué variables del array $_SESSION quiero destruir? Al menos yo no encontré esto en la documentación de PHP :( ¿O basta con vaciar las variables específicas para que quede seguro? Yo pienso que no :(
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #4 (permalink)  
Antiguo 17/08/2007, 10:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Múltiples sesiones

Puedes usar en lugar de session_destroy(), unset.

Código PHP:
unset( $_SESSION['sistema_2'] ); 
Asi solo borras una parte de la sesion y no toda.

Saludos.
  #5 (permalink)  
Antiguo 17/08/2007, 11:01
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Múltiples sesiones

Gracias, GatorV.

Entonces tú crees que eliminando sólo las variables queda seguro, sin preocuparse que la sesión como tal siga abierta?..... Mmh... En todo caso por ahí me dijeron que la sesión PHP tras un rato de inactiva se destruye sola, es así, cierto? Porque si así fuera no sería malo eso de sólo borrar las variables .__.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #6 (permalink)  
Antiguo 17/08/2007, 11:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Múltiples sesiones

Asi es despues de un tiempo de inactividad la session se marca como "basura" y se elimina del servidor.

Eliminando las variables es solo un paso, tienes que hacer bien la auditoria a tus sistemas de lo que estas trabajando para saber que no hay "agujeros" donde aunque no este la session como tal abierta puedan entrar.

Saludos.
  #7 (permalink)  
Antiguo 17/08/2007, 11:10
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Múltiples sesiones

Uhm... gracias entonces, GatorV :)
Esto me hizo recordar precisamente que hace unas semanas un tipo hackeó mis sitios personales, de puro mala onda :( (mis sitios no son muy visitados, a lo mucho 2 visitas diarias, entre ellas la mía, jajaja xD, por eso no entendí por qué a ese tipo le dio conmigo ¬¬...).
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #8 (permalink)  
Antiguo 17/08/2007, 13:52
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Múltiples sesiones

Ahora, por que no defines cada session? ej:

Código PHP:
#En sistema1.php
session_name('tuSistemaUno');
session_cache_expire(15); #Si lo deseas
session_start();

$_SESSION["sistema"] = "Uno";

#en sistema2.php
session_name('tuSistemaDos');
session_cache_expire(15); #Si lo deseas
session_start();

$_SESSION["sistema"] = "Dos"
Así, si bien ambas sessions se llaman $_SESSION["sistema"] pertenecen a lugares diferentes y tienen valores diferentes, depende de que definas como session_name al momento de la llamada. También podrías agregar un session_save_path('undir/otrodirparasessiones'), aunque con el session_name ya te sobra.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 20/08/2007, 10:49
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Múltiples sesiones

Oh... no conocía el uso de session_name() O_o
Muchas gracias por el dato, nicolaspar! Lo intentaré probar ^_^Gracias!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
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 19:02.