Foros del Web » Programando para Internet » PHP »

¿autentificar sesiones??

Estas en el tema de ¿autentificar sesiones?? en el foro de PHP en Foros del Web. ¡¡Hola a todos!! Continuo en mi andada por el fascinante mundo del PHP, pero está visto que esto de las sesiones no me va a ...
  #1 (permalink)  
Antiguo 21/07/2003, 11:40
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 20 años, 8 meses
Puntos: 0
Pregunta ¿autentificar sesiones??

¡¡Hola a todos!!

Continuo en mi andada por el fascinante mundo del PHP, pero está visto que esto de las sesiones no me va a dejar en paz.

Ya lo he entendido casi todo (creo): uso arrays superglobales, se que se pasan pro cookies o por URL, etc...

Mi principal duda ahora es : he encontrado en php.net un script para autentificar sesion y usuario (bastante completo), sin embargo no entiendo bien su utilidad. Es decir, yo pensaba que de eso se encarga PHP.No entiendo como se podria hacer un uso malintencionado en este tema. Si me lo pudiérais explicar...

¿Creeís conveniente codificar (con md5, mcrypt,...) todos los datos de las session como por ejemplo $_SESSION["registrado"]="SI" a la hora de trabajar con ellos?¿que tipo de mal uso podría hacerse con estos datos si no los codifico ?¡¿Como se podrían hacer con ellos?!


Muchisimas gracias por adelantado!!!

Por si os interesa, aquí os envio el script que os he comentado antes:

Here is script I have been using to authenticate the session and the user

SCRIPT

//after successful database authentication with username AND password match

//get the unique time that this user has logged in at
$time_started = md5(mktime());

//encrypt the username and password
$secure_session_user = md5($_POST['username'].$_POST['password']);

//get the current users username
$_SESSION['session_user'] = $_POST['username'];

//this session_key will be used to authenticate on every page / getIPADDR() is a function which just return the ip address (I found here on php.net)
$_SESSION['session_key'] = $time_started.$secure_session_user.getIPADDR().ses sion_id();

$_SESSION['current_session'] = $_POST['username']."=".$_SESSION['session_key'];

//my own function which redirects the user
p_redirect("../account/profile_home.php");

//So now we have 3 SESSION vars which we will use for authentication
1. $_SESSION['current_session']
2. $_SESSION['session_key']
3. $_SESSION['session_user']

//On every page, we include a file called verify_session.php which has the following code
if ($_SESSION['current_session'] != $_SESSION['session_user']."=".$_SESSION['session_key'])
header("location:../login/index.php?auth_msg=".urlencode("Your session has expired, please login again"));
if ($logout == "logout")
{
$_SESSION['current_session'] = rand(100,9000000);
$_SESSION['curr_sess_iden'] = rand(100,9000000);
$_SESSION['session_user'] = "Oscar the Grouch";
$_SESSION['session_key'] = rand(100,9000000);
header("location:../login/index.php?auth_msg=".urlencode("You have been logged out"));
}

//and in our navigation, we have a logout link as simple as
<a href="<? $_SERVER['PHP_SELF'] ?>?logout=logout">Logout</a>

Hope it helps someone....
  #2 (permalink)  
Antiguo 21/07/2003, 14:18
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 8 meses
Puntos: 1
Hola mi amigo,

En realidad la pregunta que haces es muy interesante, pero pienso que la respuesta depende (como tantas otras cosas) de en qué contexto son usadas tecnologías como esta de las cookies.

En el caso particular de las cookies, este pequeño y sencillo (aunque dramáticamente útil) invento ha dado ya para múltiples polémicas que dividen tanto a la comunidad de usuarios (personas que visitan las páginas web) como desarrolladores por igual. En fin, el tema es tan extenso e interesante, que daría para extensos debates sobre la implementación y modo de uso de estas "galletitas". En este sentido, te recomiendo que, si aun no lo has hecho, visites http://www.cookiecentral.com/ - sitio web en donde puedes encontrar mucha información interesante sobre esta tecnología. La información encontrada allí es del tipo de cosas que, a mi juicio, todo desarrollador web (y en lo posible, usuario final) debería conocer, de modo que este tipo de tecnologías fuesen utilizadas más sabiamente.

Pero bueno, dejando de lado los apuntes generales, creo que en cierta forma tu mismo has respondido tu pregunta...

¿Realmente quieres que la autenticación de los usuarios de tu sitio se realice únicamente mediante recursos como las cookies? Es decir, en caso de que una persona se entere del modo en que has programado tu sistema, ¿estás dispuesto a que todo lo que separe el contenido vital de tu sitio del visitante casual sea un trozo de información que viaja a través de Internet y todo lo que dice es `registrado=SI'?

No estoy diciendo que yo conozca la respuesta a estas cuestiones. Pero para tí deben ser preguntas naturales, a las que con seguridad sabrás darles la respuesta más apropiada. Lo único que te puedo recomendar, a manera de apunte personal, es que trates de mantener las cosas en la perspectiva adecuada.

Si por ejemplo yo fuera a hacer transacciones bancarias en línea, me sentiría frustrado y preocupado si descubro que el sistema en línea de mi banco opera sobre cookies con información importante que viaja como texto plano a través de la red. Por otra parte, si me registro a un sitio web de noticias al que basta un nombre de usuario para acceder y leer el contenido, me sentiría indeferente al modo en que el sitio web opera y maneja la información detrás de la interfaz... :)

Recuerda que las cookies se transmiten como cabeceras que el navegador le envía al servidor web, y que éste retorna (también en medio de las cabeceras HTTP) de vuelta al cliente. Así que no es difícil imaginar de qué modo podrían falsificarse estas cookies. Puede utilizarse cualquier aplicación que "hable" el protocolo HTTP para jugar con esta información. De hecho, en muchos casos pienso que un "atacante" potencial no tendría ningún problema en escribir su propia aplicación pequeña que se encargue únicamente de trabajar sobre estas cookies para realizar ataques que puedan comprometer información vital que fuera administrada en diferentes sitios web.

Recuerda también que las tecnologías como tal no son cosas "malas" (ni "buenas") que merezcan ser desaprobadas... Son los usos que las personas le damos a las tecnologías las que nos pueden producir dolores de cabezas y demás... :)

Un cordial saludo.
  #3 (permalink)  
Antiguo 22/07/2003, 10:36
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 20 años, 8 meses
Puntos: 0
Gracias por tu reflexion Leonardop, hace pensar. Supongo que todo lo que sea dificultar el trabajo a un hacker (a un cracker mas bien)es bienvenido.

Gracias amigo!!
__________________
"Quiero saber de todo.....y no se nada"
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 06:28.