Ver Mensaje Individual
  #6 (permalink)  
Antiguo 17/12/2011, 13:09
Avatar de Chico3001
Chico3001
 
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: para un login script, es necesario comparar el valor de $_SESSION?

No existe un metodo 100% seguro para evitar que alguien se te meta, lo unico que puedes hacer es complicarle las cosas a un atacante....

Una sesion es facil de encriptar (http://phpsec.org/projects/guide/1.html), y mas aun si dejas una variable obvia como "id" o "login" o "nivel", asi que lo usual ahora es crear un numero aleatorio (token) y guardarlo en la base de datos junto con los datos sensibles, despues al inicio de tu script solicitas ese token y lo comparas contra la base, asi puedes saber si la sesion es valida y que nivel tiene el usuario

Precisamente tengo una pregunta abierta sobre ese tema (http://www.forosdelweb.com/f18/llamada-duplicada-header-964815/), aqui te dejo lo que llevo de la rutina de comprobacion de seguridad, aun esta en desarrollo pero te puede servir para que te des una idea....

Código PHP:
if (!seguridad()) {
    
// Cierra la sesion y regresa a pagina de inicio
    
session_destroy();
    
$dir='entrar.php';
    
header("Location: $dir");
    die();
    } 
Código PHP:
// ***************************************************************************************
//        seguridad.- revisa que el usuario y su sesion se encuentren activas
function seguridad() {

    if(!isset(
$_SESSION['token'])) {

        global 
$self;
        
$ipv4 sprintf("%u"ip2long(getenv('REMOTE_ADDR')));

        
// Guarda variables en la lista negra para analisis posterior
        
$bd=Db::getInstance();

        
$sql="INSERT INTO config_listanegra (ip,intento,usuario,clave)
            VALUES ('$ipv4','0','$self','null')"
;
        
$bd->insertar_dato($sql);

        return 
FALSE;

    } else {

        return 
TRUE;

    }