Foros del Web » Programando para Internet » PHP »

¿ Evitar robo de sesión ?

Estas en el tema de ¿ Evitar robo de sesión ? en el foro de PHP en Foros del Web. Hola a todos! Hace tiempo, en un manual de php se mostraba como crear un código para evitar robo de sesiones. Es el siguiente: $user_check ...
  #1 (permalink)  
Antiguo 19/04/2012, 12:49
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 21 años, 1 mes
Puntos: 18
¿ Evitar robo de sesión ?

Hola a todos!

Hace tiempo, en un manual de php se mostraba como crear un código para evitar robo de sesiones. Es el siguiente:

$user_check = md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']); // Encriptamos navegador empleado + dirección IP

if (empty($_SESSION['user_data']))
{
session_regenerate_id( );
$_SESSION['user_data'] = $user_check;
}

if (strcmp($_SESSION['user_data'], $user_check) !== 0)
{

session_regenerate_id( );
echo ("Error. Debe loguearse de nuevo.");
$_SESSION = array( );
$_SESSION['user_data'] = $user_check;

}


El problema que tengo es que siempre me pide "debe loguearse de nuevo" desde mi teléfono móvil..., en el PC siempre va perfecto.

¿ Alguien sabe a que se debe?

Un saludo a todos!
  #2 (permalink)  
Antiguo 19/04/2012, 13:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: ¿ Evitar robo de sesión ?

El código se ve bien pero para que veas el problema como tal, guarda el valor de $_SERVER['HTTP_USER_AGENT'] y $_SERVER['REMOTE_ADDR'] en algún log o archivo para que veas que valores tiene cada que lo intentas desde tu teléfono móvil...

Saludos.
  #3 (permalink)  
Antiguo 19/04/2012, 13:35
Avatar de wsoul  
Fecha de Ingreso: octubre-2010
Mensajes: 190
Antigüedad: 14 años, 1 mes
Puntos: 13
Respuesta: ¿ Evitar robo de sesión ?

prueba con wifi haber si te va bien, a mi muchas veces es por que la conexión se corto
__________________
Compra y Vender artículos en https://www.losredactores.com o una comunidad de webmasters ? https://webeamos.com
  #4 (permalink)  
Antiguo 20/04/2012, 13:26
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 21 años, 1 mes
Puntos: 18
Respuesta: ¿ Evitar robo de sesión ?

He leído en otros foros que los moviles utilizan proxys o direcciones dinámicas, por lo cual es probable que la IP varie regularmente...

¿ Que opinais ?
  #5 (permalink)  
Antiguo 20/04/2012, 13:59
Avatar de Chico3001  
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 13 años, 2 meses
Puntos: 12
Respuesta: ¿ Evitar robo de sesión ?

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
  #6 (permalink)  
Antiguo 20/04/2012, 14:30
Avatar de zo0r  
Fecha de Ingreso: enero-2012
Ubicación: Miami, Florida.
Mensajes: 11
Antigüedad: 12 años, 10 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
  #7 (permalink)  
Antiguo 17/05/2012, 08:54
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.067
Antigüedad: 21 años, 1 mes
Puntos: 18
Respuesta: ¿ Evitar robo de sesión ?

Gracias por vuestras ideas...

¿ Alguien tiene alguna idea más para evitar robo de sesiones ??


Etiquetas: robo, sesión
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 09:35.