Foros del Web » Programando para Internet » PHP »

¿como validar sesion y usuario?

Estas en el tema de ¿como validar sesion y usuario? en el foro de PHP en Foros del Web. ¡hola genios!! Tengo una duda que nome deja en paz. Vereís estoy haciendo un scripts para codificar los datos de una sesion y luego validar ...
  #1 (permalink)  
Antiguo 27/09/2003, 11:36
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 14 años, 4 meses
Puntos: 0
Exclamación ¿como validar sesion y usuario?

¡hola genios!!

Tengo una duda que nome deja en paz.

Vereís estoy haciendo un scripts para codificar los datos de una sesion y luego validar al usuario y sesion en cada página (mediante un script que me encontre en el foro de php.net).Son dos funciones: una en la que genero una clave de acceso a traves de nick, ip , fecha de login... y otra para validar al usuario en cada página a la que se accede.

Por ejemplo:

$usuario_seguro=md5($nick . $password);

$_SESSION["clave_sesion"]=$hora_login.$ip_usuario.session_Id().$usuario_seg uro...

$_SESSION["usuario"]=$nick;

$_SESSION["sesion_actual"]=$nick."=".$_SESSION["clave_sesion"]


Y a continuacion en cada página

if (($_SESSION['sesion_actual'] != $_SESSION['usuario']."=".$_SESSION['clave_sesion'])
ok
else
echo "Su sesion ha expirado";


Mi pregunta es: He leido en muchos libros el peligro que entraña que el id de sesion se pase por URL, con dicho id se puede acceder a las variable de sesion, en tal caso ¡¡¡de que sirve todo lo que se hace en el scrip anterior??!!, un atacante sabe que solo tendrá que jugar con las variables de sesion que se pasan.

¿no seria mas logico hacer un md5 de nick, password y alguna cadena que solo conozcamos nosotros para realizar el proceso?
De esta manera el atacante debe saber la cadena o perder muchisimo tiempo mediante fuerza bruta.

¿como aconsejais vosotros hacerlo?¿Como se lo puedo poner dificil a los hackers?

Por ultimo y por curiosidad : ¿COMO SE PUEDE ACCEDER A LAS VARIABLES DE SESION OBTENIENDO EL ID A TRAVES DE LA URL?

Muchas gracias por vuestra paciencia.
Un saludo
__________________
"Quiero saber de todo.....y no se nada"

Última edición por kaslimon; 27/09/2003 a las 11:38
  #2 (permalink)  
Antiguo 27/09/2003, 18:37
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 14 años, 4 meses
Puntos: 0
Necesito una respuesta por favoooooooooooor....
__________________
"Quiero saber de todo.....y no se nada"
  #3 (permalink)  
Antiguo 28/09/2003, 07:33
 
Fecha de Ingreso: agosto-2003
Ubicación: España
Mensajes: 202
Antigüedad: 14 años, 4 meses
Puntos: 0
bueno yo en principio te recomiendo que utilizes otro sistema, yo te puedo guiar ya que tengo uno que no es malo
as echo nunca algo en php?
dime que url es la de los foros en español de php.net
adioooooossssss
  #4 (permalink)  
Antiguo 29/09/2003, 14:22
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 14 años, 4 meses
Puntos: 0
Si , ya he hecho algunas cositas pero sigo teniendo muchas dudas en el tema de seguridad.

No es una URL concreta, son los comentarios que aparecen tras la descripcion de alguna funcion de PHP enviados por usuarios. No se exactamente como lo envian.

Un saludo.
__________________
"Quiero saber de todo.....y no se nada"
  #5 (permalink)  
Antiguo 03/10/2003, 22:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Mi pregunta es: He leido en muchos libros el peligro que entraña que el id de sesion se pase por URL, con dicho id se puede acceder a las variable de sesion, en tal caso ¡¡¡de que sirve todo lo que se hace en el scrip anterior??!!, un atacante sabe que solo tendrá que jugar con las variables de sesion que se pasan.
A las variables de sesión no accederías .. pero, si que podría X usuario entrar bajo la identidad en curso de Y usuario .. y, por su puesto si hay "variables" que le entregues al usuario X si está bajo su sesión .. si usa el ID de sesión el usuario Y "podría" llegar a verlas.

De todas formas .. para que suceda esto, el usuario X tiene que pasarle ese ID de sesión (fijate arriba en estos foros que se propaga el ID de sesión por el URL) al usuario Y de alguna forma (pinchando en un link externo a tu sitio y que el usuario Y lo capture en un "http_referrer" .. o se lo envia por otro medio ..).

A su vez .. las sesiones en PHP tienen tiempo de expiración .. esos parámetros por defecto los configuras en tu php.ini (y algunos puedes modificarlos en .htaccess o en ini_set() ..) ..

Muchas configuraciones de tiempos de expiración de sesiones se pueden determinar "muere la sesión" al cerrar el navegador .. Con lo cual tu "intruso Y" ha de usar ese SID en ese instante .. pues en cuanto abandone la sesión .. el SID no será válido.

A todo esto .. en las últimas versiones de PHP (4.3.x en adelante) se ha mejorado mucho el tema de sesiones, prestando atención a eso mismo .. al SID y si se propaga por el URL. Ahora (en 4.3.x) el SID generado se valida si lo creó el domino que lo llama .. así que si yo intento usar tu SID de www.tal.tal desde www.yo.tal .. no conseguiré nada ..

Y .. siempre puedes propagar el SID en cookies que quedarían almacenadas en el navegador del cliente (con su tiempo de expiración definible). Sólo tienes que avisar a tu usuario que tu sistema (pese que use sesiones) requiere de cookies para funcionar.


Cita:
¿no seria mas logico hacer un md5 de nick, password y alguna cadena que solo conozcamos nosotros para realizar el proceso?
De esta manera el atacante debe saber la cadena o perder muchisimo tiempo mediante fuerza bruta.
mm ¿que crees que es ese ID de sesión (SID si le pones el nombre de la sesión) ? .. es un código generado en MD5() ...

El "SID" SOLO es una referencia al nombre del archivo en el SERVIDOR que contienen tus variables de sesión .. NO contiene ahí ninguna variable SOLO una referencia .. Por eso .. si tu SID queda dando vueltas en "log" de proxys .. de servidores que capuran los "referers" .. etc .. "Matando" (expirando mejor dicho) esos SID y ejecutando los proceso de "recolección de basura" (garbage) ya no tienes que temer nada por tus variables de sesiones.

Cita:
¿como aconsejais vosotros hacerlo?¿Como se lo puedo poner dificil a los hackers?
Yo uso cookies para propagar el SID .. con la desventaja que mis usuarios tienen que tener navegadores con cookies activadas. Es seguro pero con eseo "contra".

Ahora bien .. grácias a los nuevas mejoras del tema sesiones (como ya mencioné) de PHP .. creo que ya podemos usar con tranquilidad la propagación del SID en el URL siempre y cuando ajustemos correctamente la configuración de los tiempos de expiración de las sesiones. (ver php.ini ..)

Cita:
Por ultimo y por curiosidad : ¿COMO SE PUEDE ACCEDER A LAS VARIABLES DE SESION OBTENIENDO EL ID A TRAVES DE LA URL?
Ya te lo comenté al principio .. El SID sólo es una referencia .. no contiene variables. Todo depende de tus aplicaciones y que muestres .. Si tienes un sistema de usuarios .. con el "perfil" del usuario donde si está "longeado" le permites ejemplo: modificar su contraseña o verla .. editar sus datos personales .. etc (lo normal) .. pues si entran con tu mismo SID en ese instante que el usuario activo está usando la aplicación .. como ya he comentado .. "depende" de varios factores (sobre todo "ajuste fino" de tu configuración de sesiones) podría o no hacer algo ...

PD: .. Cuanto más leas sobre la configuración de php.ini sobre el apartado sesiones, veras que menos paranoias tendrás o por lo menos sabras por donde solucionarlo. Si lees artículos "desfasados" que hablan tal vez de "PHP" usando session_register() .. usando variables de sesión "globales" .. con cosas como $Autentificado="si" .. ahí es donde te puedes asustar xD...


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 29/10/2003, 05:59
 
Fecha de Ingreso: agosto-2003
Mensajes: 99
Antigüedad: 14 años, 3 meses
Puntos: 0
hola, estoy intentando propagar el SID por URL, me podriais pasar algún ejemplo....

un saludo y muchas gracias.
  #7 (permalink)  
Antiguo 29/10/2003, 06:48
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Hombre... como dice Cluster, no es necesario pasar el SID por URL. Haces un session_start() por cada página y listo !

Saludos !
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #8 (permalink)  
Antiguo 29/10/2003, 08:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No es tan simple drcyber ..

El SID .. o lo propagas por el URL manual o automáticamente, o lo propagas en una cookie. Pero, todo eso se define en directivas de tu PHP:

session.use_cookies // a 1 propagas el SID en cookeis.
session.use_trans_sid // a 1 PHP inserta el SID automáticamente en tus links y formularios (reescribiendo los <tag> correspondientes)

(lo que no hace PHP si usas session.use_trans_sid es reescribir tag tipo redirecionamientos javascript ... o si usas header("location ...") en esos casos (si no propagas el SID en una cookie) se ha de propagar el SID de forma manual usando: SID como constante o bien componiendolo con session_name."=".session_id()

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 12:27.