Foros del Web » Programando para Internet » PHP »

Problema seguridad con sesiones

Estas en el tema de Problema seguridad con sesiones en el foro de PHP en Foros del Web. Hola, Me encuentro desarrollando una plataforma para varios clientes en el que cada uno tiene su zona con su própia base de datos, pero todos ...
  #1 (permalink)  
Antiguo 18/12/2015, 02:29
 
Fecha de Ingreso: mayo-2012
Ubicación: Valencia
Mensajes: 67
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Problema seguridad con sesiones

Hola,

Me encuentro desarrollando una plataforma para varios clientes en el que cada uno tiene su zona con su própia base de datos, pero todos en el mismo servidor.

Por ejemplo, el cliente uno accede a: www.sitio-web/cliente1
Otro cliente accede a: www.sitio-web/cliente2

En estos subdirectorios tenemos lo mismo pero cada uno está enlazado a la base de datos de dicho cliente.

El fallo que he descubierto y que no tengo claro como solucionar es que si accedo al area del cliente1 e inicio sesión, luego la url la cambio por la del cliente2 y estoy dentro.
Es como si la misma sesión sirviera para entrar a todos ellos.

Necesito de alguna forma hacer que al cambiar de directorio, la sesión no sea la misma ya que si un cliente averigua el directorio de otro va a poder ver todos sus datos.

Como podría conseguir esto? he estado buscando información pero no encuentro nada que trate sobre este problema.

Gracias!
  #2 (permalink)  
Antiguo 18/12/2015, 03:59
 
Fecha de Ingreso: mayo-2012
Ubicación: Valencia
Mensajes: 67
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema seguridad con sesiones

Algunos detalles más sobre el problema:

Cuando inicio sesión, me guardo en $_SESSION['usuario'] el id de dicho usuario.
Y en cada sitio de la web lo que hace es comprobar si existe esa variable.

Entonces imaginemos que en cliente1 estoy logeado con un usuario que tiene el id 5 y es comercial. Luego cambio la url a cliente2 y estoy logueado como el usuario que tenga esa base de datos con el id 5 y con los permisos que tenga ese usuario.

Como puedo conseguir que las sesiones sean independientes en cada url?
  #3 (permalink)  
Antiguo 18/12/2015, 05:16
 
Fecha de Ingreso: enero-2014
Mensajes: 36
Antigüedad: 10 años, 10 meses
Puntos: 4
Respuesta: Problema seguridad con sesiones

Tienes que comprobar que el usuario accede únicamente a su directorio mediante una relación.

Es decir, si tu usuario con ID = 1 tiene como directorio 'cliente1' debes comprobar que esté en su sección con un simple IF.

Lo normal sería comprobar esta relación con datos obtenidos de una base de datos.

Te hago un ejemplo.


SESSION:
Usuario ID: 1
Nombre: Manolo (Índice -> Único)


URL:
raiz: sitio-web.com
directorio : /manolo


PHP:
if(strtolower(URL->directorio) == strtolower(SESSION->nombre)){
Acceso permitido!
}
  #4 (permalink)  
Antiguo 18/12/2015, 05:20
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: Problema seguridad con sesiones

Debes de establecer un sistema de permisos, y al igual que compruebas en cada página que el usuario este registrado debes comprobar si tiene permisos para acceder a esa parte.


De todas formas decirte que el crear un subdirector por cada usuario me parece un poco ineficiente, pues duplicar el código un montón de veces va a llevar a que cada vez que hagas una modificación tener que hacerlo en cada uno de ellos
  #5 (permalink)  
Antiguo 18/12/2015, 05:21
 
Fecha de Ingreso: enero-2014
Mensajes: 36
Antigüedad: 10 años, 10 meses
Puntos: 4
Respuesta: Problema seguridad con sesiones

PD: Igualmente, no te recomiendo esa URL de destino (www.sitio-web/cliente2)
Más interesante, seguro y personalizable sería una url así: www.sitio-web/2/cliente2-nombre

¿Por qué? Porque de esta manera podemos poner como nombre en la URL lo que queramos evitando añadir un índice a la base de datos. Imagina que repites el nombre del cliente porque tienes dos "fruterias manolo"

Podrías hacer esto:
www.sitio-web/1/fruterias-manolo
www.sitio-web/2/fruterias-manolo

Simplemente tendrías que validar que la ID de session es igual a la id que se te envía por GET y luego comparas el nombre del cliente con el que tengas en la sesión.

Etiquetas: seguridad, sesiones
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 22:11.