Foros del Web » Programando para Internet » PHP »

Como generar un SID (session id) manualmente

Estas en el tema de Como generar un SID (session id) manualmente en el foro de PHP en Foros del Web. Hola [email protected] En esta oportunidad estoy haciendo "un manejador" de sesiones propio, osea que: a mano genero el SID, lo mando a la cookie del ...
  #1 (permalink)  
Antiguo 22/11/2005, 20:44
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 4 meses
Puntos: 2
Pregunta Como generar un SID (session id) manualmente

Hola [email protected] En esta oportunidad estoy haciendo "un manejador" de sesiones propio, osea que: a mano genero el SID, lo mando a la cookie del cliente, y las variables que el cliente genera las guardo en una base de datos.
Hago esto así porque estoy desarrollando una aplicación que debe ser medianamente segura y como no puedo pagar un dedicado, la alojaré en un servidor compartido, y no quiero que nadie pueda acceder a mis variables de sesión.

Mi problema es el siguiente: para generar el session id necesito una cadena que sea única y que por ningún motivo se vaya a repetir en otro usuario que esté conectado al mismo tiempo. Entonces pensé concatenar así: "ip()-time()-5 numeros aleatorios". La función que lo hace es:
Código PHP:
function ip() // Devuelve la ip del visitante aunque se oculte mediante proxy o 0 si no la encuentra
{
    if(!empty(
$_SERVER['HTTP_X_FORWARDER_FOR'])) $ip=$_SERVER['HTTP_X_FORWARDER_FOR'];
    elseif(!empty(
$_SERVER['HTTP_VIA'])) $ip=$_SERVER['HTTP_VIA'];
    elseif(!empty(
$_SERVER['REMOTE_ADDR'])) $ip=$_SERVER['REMOTE_ADDR'];
    else 
$ip=0;
    return 
$ip;
}

$prueba=ip();
$prueba.=time();
$prueba.=rand(0,9999).rand(0,9999).rand(0,9999).rand(0,9999).rand(0,9999); 
Ahora mis dudas son:
-¿Creen que esta forma de generar el SID sea segura?
-¿Alguno tiene idea como genera el SID PHP?

Agradeceré infinitamente todo tipo de respuesta/sugerencia/opinión.

Gracias de antemano. Saludos!

Última edición por zaqpz; 22/11/2005 a las 23:27
  #2 (permalink)  
Antiguo 23/11/2005, 02:32
 
Fecha de Ingreso: agosto-2004
Mensajes: 118
Antigüedad: 13 años, 4 meses
Puntos: 1
Prueba con la funcion PHPSESSID(), que te genera un identificador único de sesion de forma automática.
  #3 (permalink)  
Antiguo 23/11/2005, 07:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por rayder
Prueba con la funcion PHPSESSID(), que te genera un identificador único de sesion de forma automática.
Estas confundido PHPSESSID() no es una función .. tampoco "genera" el SID .. es sólo el nombre por defecto que PHP le dá a las sesiones que se crean si tu no lo modificas (depende de tu php.ini, directiva: session.name = ...) por la función session_name().

Un saludo,
  #4 (permalink)  
Antiguo 23/11/2005, 08:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
-¿Alguno tiene idea como genera el SID PHP?
En general un "SID" no es más que un identificador único que no se repita y no secuencial (a ser posible afanumético para complicarlo).

Sobre el algorítmo a usar .. Puedes usar lo que quieras. Del que has creado yo aplicaría MD5() para terminar de "complicarlo" y hacerlo irreversible (ese dato es el propagarías como tu_SID y así lo almacenas en tu BD para asociar tu sesion).


Un saludo,
  #5 (permalink)  
Antiguo 23/11/2005, 11:11
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 4 meses
Puntos: 2
Gracias a los dos por responder.

Bueno entonces me quedo tranquilo de que lo que hice es medianamente seguro (le aplicaré el md5() tal como dice Cluster).

Saludos!
  #6 (permalink)  
Antiguo 23/11/2005, 14:30
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
Para eso también tienes una función de PHP que lo genera por tí.

http://ar.php.net/manual/es/function.uniqid.php

Espero que 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 16:40.