Foros del Web » Programando para Internet » PHP »

seguridad y sesiones

Estas en el tema de seguridad y sesiones en el foro de PHP en Foros del Web. Estoy haciendo una base de datos, que es modificada por ciertas personas teniendo en cuenta el nivel de permisos. Por lo q vi de Sesiones...el ...
  #1 (permalink)  
Antiguo 07/04/2004, 06:59
 
Fecha de Ingreso: noviembre-2002
Ubicación: LIMA
Mensajes: 652
Antigüedad: 21 años, 4 meses
Puntos: 1
seguridad y sesiones

Estoy haciendo una base de datos, que es modificada por ciertas
personas teniendo en cuenta el nivel de permisos.
Por lo q vi de Sesiones...el ID de la sesion debe propagarse en el URL, para q luego
el PHP reconozca a ese usuario.
Ahora..digamos que este usuario cierra el browser(se va..), viene otro usuario, a la misma PC..va al historial del
browser se encuentra algo como esto:

http://www.midominio.com/modificarBD...c184bb124fc7e3

si la sesion aun existe en el servidor...creo que podra tener acceso...y es un serio problema.

PREGUNTA: Como me aseguro q la sesion finalize cuando el usuario anterior cierra el browser?
  #2 (permalink)  
Antiguo 07/04/2004, 07:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Por lo q vi de Sesiones...el ID de la sesion debe propagarse en el URL, para q luego
el PHP reconozca a ese usuario
Concretamente el SID ha de propagase para que se continue usando la misma sesión que se inició en anteriores procesos. A su vez esa sesión contendrá tus variables de sesión que .. tal vez una de ellas identifique o tenga las propiedades de ese "usuario" que está autentificado y usando el sistema.

La propagación del SID no sólo se puede hacer por el URL sino también por cookies.

Si propagas el SID en cookies y le das tiempos de expiración "0" (en tu php.ini o ini_set() directiva session.use_cookies = 1 y session.cookie_lifetime = 0) la cookie será del tipo "sesión" .. es decir, cuando cierre todas las ventanas del sitio (que usen esa sesión) morirá la cookie (el SID en consecuencia de ese Cliente) .. luego el tiempo de session.gc_maxlifetime decidirá cuando se pasa al modo "garbage" (basura, inutilizado...) ese SID.

La propagación por cookies del SID es lo recomendable por seguridad .. pero, dependes de que el "cliente" acepte cookies.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 07/04/2004, 07:25
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Bueno ...

Según tengo entendido al cerrar el navegador la variable de sesión se destruye. Incluso teniendo abierto el navegador y copiando esta dirección: http: // www.midominio.com/modificarB...3c184bb124fc7e3 y pegándola luego en otro navegador abierto desde 0 tampoco funciona pues la variable de sesion se crea una sola vez por cada usuario.

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 07/04/2004, 10:27
 
Fecha de Ingreso: noviembre-2002
Ubicación: LIMA
Mensajes: 652
Antigüedad: 21 años, 4 meses
Puntos: 1
Hola Cluster . DEsconozco como se propaga el SID en cookies, ya q recien empiezo con esto, pero suponiendo que la PC cliente, tiene cookies habilitados...que sucede si ...se cae la PC mientras tiene la ventana abierta, o se apaga la luz..etc etc...la cookie imagino queda...puede ser usada por un usuario mal intencionado?.
Respecto a la aclaracion de Reynier, yo probe con el apache en mi pc (localhost...), y pegue la URL con el SID en otra ventana...y funciono :(.
  #5 (permalink)  
Antiguo 07/04/2004, 10:29
 
Fecha de Ingreso: noviembre-2002
Ubicación: LIMA
Mensajes: 652
Antigüedad: 21 años, 4 meses
Puntos: 1
la otra pregunta es...puede no tener cookies habilitados. Al propàgar el SID en la URL..tendre problemas de seguridad?.
  #6 (permalink)  
Antiguo 07/04/2004, 10:44
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
No se porque ...

No se porque te pasa eso pero yo tengo mi sistema de administración montado sobre sesiones y no me pasa eso. Puedo pegar la URL en n ventanas de IExplore que no me deja acceder a la administración. Mi código es este:
Código PHP:
 <?php
 
/*******************************************************************************************************************
 Sitio Web del Departamento de Marxismo
 Universidad de las Ciencias Informáticas
 Programación y Diseño: Reynier Pérez Mira ([email protected])
 Bases de Datos: Leonel Salazar Videaux ([email protected])
 Animación: Karel Pérez Ramírez ([email protected])
 *******************************************************************************************************************/
 
require("functions.php");
 
server();
 
nocache();
 
$pass md5($_POST['passwd']);
 
$query mysql_query("SELECT * FROM usuario WHERE login='".$_POST['user']."' AND passwdenc='".$pass."' AND activo=1");
 
$resultado mysql_fetch_array($query);
 if (isset(
$user) && ($user == $resultado['login']) && isset($passwd) && ($pass==$resultado['passwdenc'])){
    
session_start();
    
$_SESSION['adminlogin'] = md5($user);
    
$_SESSION['adminpasswd'] = md5($passwd);
 if(
$resultado['session']==""){
     
$sess session_id();
     
mysql_query("UPDATE usuario SET session='".$sess."' WHERE login='".$_POST['user']."' AND passwdenc='".$pass."' AND activo=1");
 }
  if(
$resultado['tipo']=="0"){
      
redirect("Departamento de Marxismo","1","indexadmin.php?accion=entrar&tipo=0&ses=".$resultado['session']."","Entrando al Sistema de Administración ...<br>Espere unos segundos para ser redireccionado");
  }elseif(
$resultado['tipo']=="1"){
      
redirect("Departamento de Marxismo","1","indexadmin.php?accion=entrar&tipo=1&ses=".$resultado['session']."","Entrando al Sistema de Administración ...<br>Espere unos segundos para ser redireccionado");
  }elseif(
$resultado['tipo']=="2"){
      
redirect("Departamento de Marxismo","1","indexadmin.php?accion=entrar&tipo=2&ses=".$resultado['session']."","Entrando al Sistema de Administración ...<br>Espere unos segundos para ser redireccionado");
  }elseif(
$resultado['tipo']=="3"){
      
redirect("Departamento de Marxismo","1","indexadmin.php?accion=entrar&tipo=3&ses=".$resultado['session']."","Entrando al Sistema de Administración ...<br>Espere unos segundos para ser redireccionado");
  }elseif(
$resultado['tipo']=="4"){
      
redirect("Departamento de Marxismo","1","indexadmin.php?accion=entrar&tipo=4&ses=".$resultado['session']."","Entrando al Sistema de Administración ...<br>Espere unos segundos para ser redireccionado");
  }    
 }else{
     
redirect("Departamento de Marxismo","3","administrador.php?accion=entrar&error=errordatos","No está autorizado a entrar a esta página.<br>Por favor espere unos segundos.");
 }
?>
ahora en todas las paginas que requieras de esa seguridad debes chequear que esten iniciadas las sesiones:
Código PHP:
if(!isset($_SESSION['adminlogin']) && !isset($_SESSION['adminpasswd'])){
 
redirect("No autorizado","3","administrador.php?accion=entrar","No está autorizado a entrar en esta página");
 exit(); 
Salu2
__________________
Ing. Reynier Pérez Mira
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 02:02.