Foros del Web » Programando para Internet » PHP »

Sesiones, Cambiar el ID

Estas en el tema de Sesiones, Cambiar el ID en el foro de PHP en Foros del Web. Hola Muchachos, yo nuevamente con las sesiones. Tengo una duda. Lei por ahi ke komo seguridad pa ke no te roben los datos de las ...
  #1 (permalink)  
Antiguo 22/10/2004, 07:20
Avatar de granbosteron  
Fecha de Ingreso: agosto-2004
Mensajes: 164
Antigüedad: 19 años, 8 meses
Puntos: 1
Pregunta Sesiones, Cambiar el ID

Hola Muchachos, yo nuevamente con las sesiones. Tengo una duda. Lei por ahi ke komo seguridad pa ke no te roben los datos de las sesiones, ya ke algunas veces el ID se ve por pasarla por GET, se utiliza un script para verificar el IP de SESSION con el IP actual, si son diferentes, se destruye la sesion y se hace uh HEADER LOCATION a donde keramos.

Ahora la cuestion es esta, si justo por casualidad roban el ID de SESSION cuando el usuario originario de la misma la esta utilizando, el ke se la roba va a kerer ingresar, y el script va a destruir la sesion, por ende se destruira para los dos.
Lo ke veo tambien es ke si siguen navegando con el mismo ID seteado, se van a matar continuamente la SESSION.

El Script es el Siguiente:

if (SESSION_CHECK_IP_ADDRESS==true) {
$ip_address = tep_get_ip_address();
if(isset($_SESSION['SESSION_IP_ADDRESS'])&&($_SESSION['SESSION_IP_ADDRESS'] != $ip_address)){
$_SESSION = array();
tep_session_unset();
tep_session_destroy();
return header("location: ".URL_NOSSL);
}elseif(!isset($_SESSION['SESSION_IP_ADDRESS'])){
$_SESSION['SESSION_IP_ADDRESS']= $ip_address;
}


Mi pregunta es, si kuando se roban el ID de SESSION, o sea ke se la roba otro usuario y cuando la kiere utilizar se le destruye, al usuario originario del ID mas alla ke se le destruye tambien y tiene ke comenzar de nuevo; hay posibilidad de ke a alguno de los 2 se le regenere un ID de SESSION nuevo ???? por ke si no, vuelvo a repetir ke si siguen navegando los 2 con el mismo ID, se destryen continuamente la SESSION.

Gracias por su atención, y Saludos pa todos.
  #2 (permalink)  
Antiguo 22/10/2004, 07:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Para evitar esos problemas de seguridad .. propaga el SID en cookies (forzando a PHP a que lo haga así sólo y nada más). Esto tiene sus ventajas de seguridad .. y sus desventajas a nivel que necesitas que tus "clientes" (navegadores) acepten cookies.

Puedes leer este documento sobre seguridad de sesiones:
http://www.acros.si/papers/session_fixation.pdf
(creo que esto ya te lo recomendé en otra ocasión)

Por lo demás .. desde PHP 4.3.2 si mal no recuerdo tienes la función:
session_regenerate_id()

más info:
http://www.php.net/manual/en/ref.session.php



Un saludo,

Última edición por Cluster; 22/10/2004 a las 07:32
  #3 (permalink)  
Antiguo 22/10/2004, 07:44
Avatar de granbosteron  
Fecha de Ingreso: agosto-2004
Mensajes: 164
Antigüedad: 19 años, 8 meses
Puntos: 1
GRacias Cluster, como siempre.

Si ya me habias dicho de forzar a ke use si o si Cookies, pero es justamente lo ke no kiero, si no ke pueda funcionar de las 2 maneras.

Gracias por los articulos.
  #4 (permalink)  
Antiguo 22/10/2004, 08:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Funcionar de las dos maneras podrás hacerlo sin problemas .. pero la seguridad la obtendrás si lo haces por cookies.

Tomando la "IP" .. ejemplo en una Intranet (y algunos proveedoes ISP) donde pasan todos por un proxy (bajo la misma IP) .. podría igualmente suplantar esa sesión si te basas en eso sólamente.

Un saludo,
  #5 (permalink)  
Antiguo 22/10/2004, 13:58
Avatar de granbosteron  
Fecha de Ingreso: agosto-2004
Mensajes: 164
Antigüedad: 19 años, 8 meses
Puntos: 1
Gracias Cluster...

Pero no era tan solo obtener el IP, si mas datos de la conexion del usuario.
Como ser esta funcion ke obtiene el IP ADDRESS, el GET HOST y el IP PROXY (si hay ).

Código PHP:
<?
//FUNCION REMOTE INFO
function getRemoteInfo () {
   
$proxy="";
   
$IP "";
   if (isSet(
$_SERVER)) {
       if (isSet(
$_SERVER["HTTP_X_FORWARDED_FOR"])) {
           
$IP $_SERVER["HTTP_X_FORWARDED_FOR"];
           
$proxy  $_SERVER["REMOTE_ADDR"];
       } elseif (isSet(
$_SERVER["HTTP_CLIENT_IP"])) {
           
$IP $_SERVER["HTTP_CLIENT_IP"];
       } else {
           
$IP $_SERVER["REMOTE_ADDR"];
       }
   } else {
       if ( 
getenv'HTTP_X_FORWARDED_FOR' ) ) {
           
$IP getenv'HTTP_X_FORWARDED_FOR' );
           
$proxy getenv'REMOTE_ADDR' );
       } elseif ( 
getenv'HTTP_CLIENT_IP' ) ) {
           
$IP getenv'HTTP_CLIENT_IP' );
       } else {
           
$IP getenv'REMOTE_ADDR' );
       }
   }
   if (
strstr($IP',')) {
       
$ips explode(','$IP);
       
$IP $ips[0];
   }
   
$RemoteInfo[0]=$IP;
   
$RemoteInfo[1]=@GetHostByAddr($IP);
   
$RemoteInfo[2]=$proxy;
   return 
$RemoteInfo;
}
?>
Espero les sirva
Saludos
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 19:03.