Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/04/2012, 14:30
Avatar de zo0r
zo0r
 
Fecha de Ingreso: enero-2012
Ubicación: Miami, Florida.
Mensajes: 11
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: ¿ Evitar robo de sesión ?

Buenas.

Cita:
Iniciado por Chico3001 Ver Mensaje
Es altamente probable.... por lo que no vas a poder confiar en la direccion IP que leas, para resolverlo, hay que saber como se esta generando la sesion en la funcion session_regenerate_id, mientras tanto lo que yo hago es crear un token al azar y almacenarlo en una base de datos con una hora de salida, ese token lo asigno a la superglobal de session y lo comparo cada vez que el usuario entra, pero ademas se genera uno nuevo y se repite el ciclo, hasta que expire el tiempo de salida o el usuario decida salir...

Como el token varia cada vez que el usuario visita la pagina (aunque sea la misma) es muy dificil poder robarlo
Ese método no está mal, pero la optimización se va para el piso, estas enviando una SET COOKIE cada vez que el usuario visita una página, aparte que internamente (Ya sean archivos o MySQL (Véase session_set_save_handler())) se tienen que actualizar los datos (ID de sessión etc), o lo que es peor, borrar y crear nuevamente.

Para robarte una sesión (COOKIE en todo caso) hay dos maneras principales, capturandote el tráfico de la red en que te encuentras o con un XSS. El primero no lo hace todo el mundo y con SSL se soluciona, el segundo hoy en día se puede evitar con activar la opción HTTP ONLY para la COOKIE (Así evitamos obtenerla desde document.cookie) ya que casi todos los navegadores los soportan (IE7+, Chrome, Firefox, Safari, Opera).

Por ejemplo si usamos sesiones, podemos luego de iniciarla usar setcookie() y activar el parámetro o antes de usar session_start() usamos session_set_cookie_params(), el parámetro en ambas es (bool $httponly = false).

http://us3.php.net/manual/en/function.setcookie.php
http://www.php.net/manual/en/function.session-set-cookie-params.php

Saludos.

Última edición por zo0r; 20/04/2012 a las 14:38