Foros del Web » Programando para Internet » PHP »

MD5 en login

Estas en el tema de MD5 en login en el foro de PHP en Foros del Web. Buenas usuarios de Foros del Web. Estoy creando un sistema de usuarios (ahora más que nada por "satisfacción personal", aunque quizá haga algo más de ...
  #1 (permalink)  
Antiguo 08/07/2009, 05:57
 
Fecha de Ingreso: diciembre-2008
Mensajes: 4
Antigüedad: 15 años, 4 meses
Puntos: 0
MD5 en login

Buenas usuarios de Foros del Web.
Estoy creando un sistema de usuarios (ahora más que nada por "satisfacción personal", aunque quizá haga algo más de aquí en adelante...quien sabe) y en el registro (registrar.php) si consigo que encripte la contraseña que el user ha introducido y la guarda en la DB con éxito, pero ahora tengo que encriptar la contraseña en el login (login.php y autentificar.php) para que al comprobarla con la que hay en la BD (encriptada ya) la verifique.
Supongo que será fácil hacerlo, pero esto de la seguridad lo he cogido hace poco y no lo manejo. Me he mirado varios hilos y otras páginas relacionado con esto pero no logro "entenderlo"

La base de datos es MySQL, y los archivos son:
reg.php
Código PHP:
<?
include('config.php'); 

echo 
'<form action="registrar.php" method="POST">
Nick: <input type="text" name="nick" size="30"><br>
Password: <input type="password" name="pass" size="30" ><br>
Repetir Password: <input type="password" name="pass1" size="30" ><br>
email: <input type="text" name="email" size="50"><br>
Rollo: <textarea name="rollo" cols="30" rows="10"></textarea><br>
<input type="submit" name="submit" value="Enviar"></form>'
;
?>
registrar.php
Código PHP:
<?
include('config.php'); 

if((
$_POST[nick] == ' ') or ($_POST[pass] == ' ') or ($_POST[pass1] == ' ') )
{
Header("Location: reg.php"); 
}else{

if(
$_POST[pass] != $_POST[pass1])
{
echo 
'Las passwords no son iguales';
}else{

$user stripslashes($_POST["nick"]);
$user strip_tags($user);
$pass stripslashes($_POST["pass"]);
$pass strip_tags($pass);

$usuarios=mysql_query("SELECT nick FROM users WHERE nick='$user' ");
if(
$user_ok=mysql_fetch_array($usuarios))
{
echo 
'El usuario ya esta registrado';
mysql_free_result($usuarios);
}else{

$email stripslashes($_POST["email"]);
$email strip_tags($email);

$rollo stripslashes($_POST["rollo"]);
$rollo strip_tags($rollo);
$rollo str_replace("\n\r","<br>",$rollo);
$rollo str_replace("\r\n","<br>",$rollo);
$rollo str_replace("\n","<br>",$rollo);

$fecha time();
$level "2"

$pass md5($pass);

mysql_query("INSERT INTO users (nick,pass,email,fecha,level,rollo) values ('$user','$pass','$email','$fecha','$level','$rollo') "); 
echo 
'Usuario registrado con éxito'
}

}


?>
login.php
Código PHP:
<?
include('config.php'); 

if(!isset(
$_SESSION[usuario]) )
{

echo 
'<form action="autentificar.php" method="POST">
Nick: <input type="text" name="nick" size="30"><br>
Password: <input type="password" name="pass" size="30" ><br>
<input type="submit" name="submit" value="Enviar"></form>'
;

}else{

echo 
'Bienvenido '.$_SESSION[usuario]; //ej Bienvenido Juan
echo '<br>Tu level es '.$_SESSION[level]; //mostramos el level del user
if($_SESSION[level] == 1
{

echo 
'<br><a href=paginaprivada.php>Ir a pagina privada</a>'
}

echo 
'<br><a href=logout.php>Salir</a>'

}

?>
Código PHP:
<?
include('config.php'); 

if( (
$_POST[nick] == ' ') or ($_POST[pass] == ' ') )
{
Header("Location: login.php"); 
}else{

$usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='password' ");
if(
$user_ok mysql_fetch_array($usuarios))
{

session_register("usuario"); 
session_register("idusuario"); 
session_register("level");

$_SESSION[usuario] = $user_ok["nick"]; 
$_SESSION[idusuario] = $user_ok["id"]; 
$_SESSION[level] = $user_ok["level"]; 

Header("Location: login.php");

}else{
echo 
'Nick y pass incorrectos';
}


?>
El logout.php tan solo tiene un "session_destroy(); "
Saludos y mil gracias.

Última edición por Gend; 08/07/2009 a las 06:08 Razón: Añadir datos.
  #2 (permalink)  
Antiguo 08/07/2009, 06:12
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: MD5 en login

login.php -> el formulario html que obtiene los datos del usuario.
autentificar.php -> el fichero que recibe los datos de login.php

Una vez filtrados los datos, encriptas la contraseña. Cuando este escriptada la comparas con la contraseña de la base de datos.

Si quieres mas seguridad podrias encriptar la contraseña con javascript para que asi no viaje en texto claro hasta el servidor.

http://pajhome.org.uk/crypt/md5/index.html
__________________
----
http://www.mascodigo.com
  #3 (permalink)  
Antiguo 08/07/2009, 06:14
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: MD5 en login

Creo sea suficiente esto:
autentificar.php
Código PHP:
<?
include('config.php'); 

if( (
$_POST[nick] == ' ') or ($_POST[pass] == ' ') )
{
Header("Location: login.php"); 
}else{

$usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='".md5($_POST['pass'])."' ");
if(
$user_ok mysql_fetch_array($usuarios))
{

session_register("usuario"); 
session_register("idusuario"); 
session_register("level");

$_SESSION[usuario] = $user_ok["nick"]; 
$_SESSION[idusuario] = $user_ok["id"]; 
$_SESSION[level] = $user_ok["level"]; 

Header("Location: login.php");

}else{
echo 
'Nick y pass incorrectos';
}


?>
Asì tendria que funcionar, claro que seria mejor filtrar siempre los input POST o GET antes que utilizarlos en una query por impidir SQL injection.
Chao!
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:51.