Comunidad de diseño web y desarrollo en internet online

Contraseña encriptada con MD5 error al poder logearse

Citar            
MensajeEscrito el 13 Nov 2011 11:22 pm
Hola amigos

Estoy teniendo un detalle, estoy revisando la seguridad de mi sitio web ya que llevara un user login, pero estoy teniendo el problema de accesar. El registro tengo que la contraseña se encripte con MD5.

Pero ala hora de logearme me dice que la contraseña es incorrecta y esto es por que hace esto

if (row [$password] == $password) {
Entrar
}
en manera de texto lo que hace es validar si la contraseña introducida es igual ala de la base de datos
if (row [DF$$%DFD546ghDFGsdfs2#$%dfsAsdr$&] == prueba01 {
entrar
}

por tanto no es igual como le puedo hacer ahi y seguir manteniendo el encriptado? Espero puedan ayudarme amigos.

:cool:

este es mi codigo de registrar.php

Código PHP :

<?php
}
// verificamos si se han enviado ya las variables necesarias.
if (isset($_POST["name"])) 
   {
   $name = $_POST["name"];
   $last_name = $_POST["last_name"];
   $password = $_POST["password"];
   $password2 = $_POST["password2"];
   $email = $_POST["email"];
   // Hay campos en blanco
   if($name==NULL|$last_name==NULL|$password==NULL|$password2==NULL|$email==NULL) {
      echo "un campo está vacio.";
      formRegistro();
   }else{
      // ¿Coinciden las contraseñas?
      if($password!=$password2) {
         echo "Las contraseñas no coinciden";
         formRegistro();
      }else{
         // Comprobamos si el nombre de usuario o la cuenta de correo ya existían
         $checkemail = mysql_query("SELECT email FROM users WHERE email='$email'");
         $email_exist = mysql_num_rows($checkemail);
         if ($email_exist>0) {
            echo "La cuenta de correo se encuentra uso";
            formRegistro();
         }
         else
         {
            $query = 'INSERT INTO users (name, last_name, password, email, creation_date)
            VALUES (\''.$name.'\',\''.$last_name.'\',\'.md5($password).'\',\''.$email.'\',\''.date("Y-m-d").'\')';
            mysql_query($query) or die(mysql_error());
            echo 'El usuario <strong>'.$name.'</strong>&nbsp;<strong>'.$last_name.'</strong> ha sido registrado de manera satisfactoria.<br />';
            ?>
                <?php
         }
      }
   }
}else{
   formRegistro();
}
?>


Este valida que exita y logearse

Código PHP :

<?php
session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','u129824','#aLsoC0x')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('u129824_users')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function quitar($mensaje)
{
   $nopermitidos = array("'",'\\','<','>',"\"");
   $mensaje = str_replace($nopermitidos, "", $mensaje);
   return $mensaje;
}
if(trim($_POST["email"]) != "" && trim($_POST["password"]) != "")
{
   // Puedes utilizar la funcion para eliminar algun caracter en especifico
   //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
   //$password = $HTTP_POST_VARS["password"];
   // o puedes convertirlos a su entidad HTML aplicable con htmlentities
   $email = strtolower(htmlentities($_POST["email"], ENT_QUOTES));
   $password = $_POST["password"];
   $result = mysql_query('SELECT password, email FROM users WHERE email=\''.$email.'\'');
   if($row = mysql_fetch_array($result)){
      if($row["password"] == $password){
         $_SESSION["k_email"] = $row['email'];
         //echo 'Has sido logueado correctamente '.$_SESSION['k_name'].' <p>';
         //header('Location: ../admin/index.php');
         echo '<SCRIPT LANGUAGE="javascript">location.href = "index.php";</SCRIPT>';
         //Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
         /*Ingreso exitoso, ahora sera dirigido a la pagina principal.
         <SCRIPT LANGUAGE="javascript">
         location.href = "index.php";
         </SCRIPT>*/
      }else{
         echo 'Password incorrecto';
      }
   }else{
      echo 'Usuario no existente en la base de datos';
   }
   mysql_free_result($result);
}else{
   echo 'Debe especificar un usuario y password';
}
mysql_close();
?>


De igual forma si me pueden ayudar a ver si tengo buena seguridad.

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 13 Nov 2011 11:38 pm
pero...

Código :

if (row [$password] == $password) {
//Entrar
}

siempre te dara error la forma en la que pones row es la de una constante cuando deberia ser una variable

Código PHP :

if ($row[$password] == $password) {
//Entrar
}

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Nov 2011 05:55 am
Hola tuadmin gracias por tu respuesta,

Pero era un decir para mejor entenderme, el codigo real es el que estoy usando, solo mi duda es por que me marca como contraseña no valida, cuando se de antemano cual es. y mi duda es si tiene algo que ver con que guarde la contraseña encriptada y la tome desde la base de dato y ala hora de comprarlo no es igual.

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 14 Nov 2011 06:35 am
Si lo que guardas en la BD es el hash MD5 ("la contraseña encriptada") y debes compararla con la cadena ingresada por el usuario, entonces la cadena ingresada por el usuario debes pasarla por la función MD5.

En definitiva, lo que se comparan son los hashes MD5 entre sí.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 14 Nov 2011 03:11 pm
Gracias DriverOp

Dejame revisarlo, y te comento al respecto solo para no regarla el .md5($password). lo pondria en la validacion del if anterior vdd?

Ej.

Código PHP :

if($row = mysql_fetch_array($result)){

      if($row["password"] == $password){

         $_SESSION["k_email"] = $row['email'];

         //echo 'Has sido logueado correctamente '.$_SESSION['k_name'].' <p>';

         //header('Location: ../admin/index.php');

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

firefox
Citar            
MensajeEscrito el 14 Nov 2011 04:48 pm
Yep, justo en ese if.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 14 Nov 2011 05:24 pm
Exelente!! ya pude logearme con clave encriptada!

Muchas gracias DriverOp un gran saludo.

Para todos los amigos asi es como quedo ya al final.

Código PHP :

if($row = mysql_fetch_array($result)){
      if($row["password"] == md5($password)){
         $_SESSION["k_email"] = $row['email'];
         //echo 'Has sido logueado correctamente '.$_SESSION['k_name'].' <p>';

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.