Foros del Web » Programando para Internet » PHP »

Brecha en sistema de login

Estas en el tema de Brecha en sistema de login en el foro de PHP en Foros del Web. Hola a todos, como indica el titulo del tema, tengo un problema que espero que me ayuden a solucionar, tengo creado un sistema de login ...
  #1 (permalink)  
Antiguo 21/09/2011, 15:05
 
Fecha de Ingreso: abril-2011
Mensajes: 67
Antigüedad: 13 años
Puntos: 6
Exclamación Brecha en sistema de login

Hola a todos,
como indica el titulo del tema, tengo un problema que espero que me ayuden a solucionar, tengo creado un sistema de login con sesiones para mis usuarios y estoy pasando el id del usuario por GET para poder recuperar algunos datos como su nombre, email, etc...

el problema es que cunado un usuario se conecta y su id=1 si cambias el id en el URL y poner 3 en lugar de 1 se conecta automáticamente como el usuario con la id=3.

el codigo del login es el siguiente;

<?php
include ("includes/config.php");

$username=$_POST['usuario'];
$password=md5($_POST['contrasena']);
$query = mysql_query("SELECT * FROM users WHERE usuario = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);

if($data['contrasena'] == $password && $data['usuario']==$username){
session_start();
$_SESSION["autentificado"]= "SI";
$id=$data['id_usuario'];
header ("Location: ssctc.php?id=$id");
}else {
header("Location: index.php?erroracceso=si");
}

?>

Que es lo que estoy haciendo mal???
hay alguna otra manera de recuperar los datos del usuario conectado sin tener que pasar su id por la URL?

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 21/09/2011, 15:08
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Brecha en sistema de login

Que tal,

Almacena el id en una sesión:

Código PHP:
Ver original
  1. $_SESSION["id_usuario"]= $id;

Y usas esa sesión en las otras páginas.

Saludos
  #3 (permalink)  
Antiguo 21/09/2011, 15:33
 
Fecha de Ingreso: agosto-2011
Mensajes: 110
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Brecha en sistema de login

Hola, NUNCA se debe pasar ese tipo de datos por URL , una vez confirmes que los datos que ha introducido el usuario son correctos lo mejor es , como te ha dicho quike 88, emplear una variable de sesion.

Las variables de sesion se almacenan en el servidor, lo que quiere decir que el usuario no tiene acceso directo a ellas, el usuario solo recibe una id de sesion que es identificada por el servidor ,por esto , este tipo de datos como el identificador de usuario que utilizas para proporcionar acceso a la BD debe estar en el servidor para asegurarte de que no ha cambiado.

Una pregunta, ¿el nombre de usuario es unico ?, ¿no puede haber dos usuarios con nombre repetido?, lo digo porque en tu consulta supones que solo va a haber una fila coincidente, pero si el nombre de usuario puede repetirse, es posible que compruebes la contraseña y no coincida, o incluso que obtengas por error la cuenta de otro usuario (podrias obtener por error un id distinto de un usuario con nombre similar, para evitar esto deberias comprobar en la consulta sql que se cumple que usuario = $user y que password = $password , eso si es imprescindible que filtres las entradas del formulario. mediante addslashes() y stripslashes() para evitar la inyecccion sql.

Espero no haberme extendido mucho ejjejeje un saludo.
  #4 (permalink)  
Antiguo 22/09/2011, 08:27
 
Fecha de Ingreso: abril-2011
Mensajes: 67
Antigüedad: 13 años
Puntos: 6
Respuesta: Brecha en sistema de login

Muchas Gracias por la información me ha sido muy util la verdad, aunque me queda una pequeña duda!!!

se supone que al verificar los datos declaro la session como tengo que guardar el $id? y cómo debo recuperarla para en las demas páginas? serian tan amables de facilitarme algun ejemplo!!

muchas gracias
  #5 (permalink)  
Antiguo 22/09/2011, 08:54
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Brecha en sistema de login

Que tal, creo que no prestaste atención a mi mensaje:

Cita:
Iniciado por quike88 Ver Mensaje
Que tal,

Almacena el id en una sesión:

Código PHP:
Ver original
  1. $_SESSION["id_usuario"]= $id;

Y usas esa sesión en las otras páginas.

Saludos
Y para leer sería:

Código PHP:
Ver original
  1. echo $_SESSION["id_usuario"];

Te recomiendo que leas mas acerca del uso de sesiones en el manual de php

Saludos.
  #6 (permalink)  
Antiguo 22/09/2011, 14:21
 
Fecha de Ingreso: abril-2011
Mensajes: 67
Antigüedad: 13 años
Puntos: 6
Respuesta: Brecha en sistema de login

Cita:
Iniciado por quike88 Ver Mensaje
Que tal, creo que no prestaste atención a mi mensaje:



Y para leer sería:

Código PHP:
Ver original
  1. echo $_SESSION["id_usuario"];

Te recomiendo que leas mas acerca del uso de sesiones en el [URL="http://www.php.net/manual/es/book.session.php"]manual de php[/URL]

Saludos.
Muchisimas gracias quike88, ya lo he pillado y me funciono de maravilla.


Ha sido muy amabole y por cierto gracias por el link sobre las sessiones, es un tema que aun ando flojo.

Etiquetas: login, mysql, sistema, usuarios
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 23:31.