Foros del Web » Programando para Internet » PHP »

Seguridad en sesiones

Estas en el tema de Seguridad en sesiones en el foro de PHP en Foros del Web. Ya he buscado demasiado y no encuentro nada. Estoy haciendo un sistema que tiene que tenes los niveles mas altos de seguridad y el problema ...
  #1 (permalink)  
Antiguo 09/08/2005, 21:08
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 19 años, 10 meses
Puntos: 0
Seguridad en sesiones

Ya he buscado demasiado y no encuentro nada.
Estoy haciendo un sistema que tiene que tenes los niveles mas altos de seguridad y el problema lo tengo con las sesiones.
Como muchos saben, son vulnerables, ya que se pueden robar sesiones abiartas por otro usuario.
He leido este articulo, pero la verdad es que no funciona.

alguien sabe como proteger las sesiones ?
  #2 (permalink)  
Antiguo 10/08/2005, 01:47
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 19 años, 10 meses
Puntos: 0
Despues de mucho leer llegue a esto. No se si es el mejor metodo, me gustaria que me den sus comentarios

Código PHP:
<?

// pregunto si hay cookie. 
// Si la hay decodifico el ID de la session
if(isset($_COOKIE['secId'])) {
    
session_id(base64_decode($_COOKIE['secId']));
}

// tiempo de expiracion = 10 minutos
$expiry 60*10;
session_start();

// guarda en la cookie el nombre de la 
// session codificado para que no sea legible
setcookie(session_name(),base64_encode(session_id()), time()+$expiry"/");

// Lo mismo que arriba, pero en lugar de 
// usar el nombre de la sesion uso secId 
// para luego recuperar el valor desde 
// este nombre de variable
setcookie('secId',base64_encode(session_id()), time()+$expiry"/");


// Si el navegador cambia se destruye la 
// sesion y devuelve un mensaje de error
if(!isset($_SESSION['ua'])) {
    
$_SESSION['ua'] = sha1($_SERVER['HTTP_USER_AGENT']);
} else {
    if(
$_SESSION['ua'] != sha1($_SERVER['HTTP_USER_AGENT'])) {
            echo 
"Su navegador ha cambiado. Debe loguearse nuevamente.";
                
$_SESSION['userlog'] = 0;
        
session_destroy();
                die();
    }
}

// Si la IP del cliente cambia se destruye 
// la sesion y devuelve un mensaje de error
// Esta parte es opcional y no es recomendada 
// en todos los casos. Ya que el cliente 
// podria estar detras de un firewall con ip 
// rotativa y no podria ingresar.
if(!isset($_SESSION['ui'])) {
    
$_SESSION['ui'] = sha1($_SERVER['REMOTE_ADDR']);
} else {
    if(
$_SESSION['ui'] != sha1($_SERVER['REMOTE_ADDR'])) {
            echo 
"Su IP ha cambiado. Debe loguearse nuevamente. Si usted esta detras de un firewall con IP rotativa no podra acceder al sistema.";
                
$_SESSION['userlog'] = 0;
        
session_destroy();
                die();
    }
}
?>
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 11:00.