Foros del Web » Programando para Internet » PHP »

Como encriptar contraseñas con MD5 en PHP??

Estas en el tema de Como encriptar contraseñas con MD5 en PHP?? en el foro de PHP en Foros del Web. Hola amigos!! Me urge esta respuesta! Soy administrador de una nueva PTC llamada LatinBux.us. He escuchado que el Script que utilizo es muy vulnerable a ...
  #1 (permalink)  
Antiguo 24/11/2010, 21:12
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Como encriptar contraseñas con MD5 en PHP??

Hola amigos!! Me urge esta respuesta!

Soy administrador de una nueva PTC llamada LatinBux.us. He escuchado que el Script que utilizo es muy vulnerable a ataques de hackers. Me han dicho que la única solución es encriptar mi contraseña (administrador) y la de mis usuarios, utilizando MD5 en PHP. Tengo un servidor pago, pero este no acepta SSL. y la verdad es muy bueno y no quiero cambiarlo xD.

La verdad es que no tengo nada de conocimientos en esa area!! me urge mucho una respuesta (lo mas clara posible)

de ante mano Gracias.
  #2 (permalink)  
Antiguo 24/11/2010, 21:13
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Usa la funcion md5() y ya ;)
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 24/11/2010, 21:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Como encriptar contraseñas con MD5 en PHP??

lee el manual...
http://php.net/md5

ahí explican ejemplos básicos de su uso, y también te invito a buscar en el foro a profundidad, ya que hay temas que hablan bastante al respecto de seguridad, etc...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 24/11/2010, 21:16
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como encriptar contraseñas con MD5 en PHP??

pues como tienes tu registro de usuario?? tu loggin?? ahi es donde debes indicar el encriptamiento con la funcion md5 de esto en la web te aseguro que hay mucho tutorial pero en el manual hay varios ejemplos de todas maneras has una prueba
Código PHP:
Ver original
  1. $var = 123;
  2. echo $var."<br/>";
  3. echo md5($var);
asi de sencillo es encriptar pero en el manual te explican mejor la funcion y en la web hay bastante material
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 24/11/2010, 21:19
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Como encriptar contraseñas con MD5 en PHP??

//encriptamos la password
$contrasena=md5($_POST['contrasena'])

// La guardás en la base de datos



luego al momento de hacer login se compara el dato guardado en la base con el dato que el user ingresa en el campo de texto de la contraseña, obviamente tambien hay que encriptarlo al vuelo, si coinciden se inicia la sesion sinó NOP.

Saludos
__________________
la la la
  #6 (permalink)  
Antiguo 24/11/2010, 21:22
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Como encriptar contraseñas con MD5 en PHP??

El manual es muy bueno, pero no entiendo mucho de programación.

Este es mi archivo de Funciones.

Código PHP:
<?php


function limitatexto$texto$limite 
  { 
    if( 
strlen($texto)>$limite 
      { 
        
$texto substr$texto,0,$limite ); 
      } 
    return 
$texto
 
  } 





function 
mostrarTemplate($tema$variables)
{
    
//var_dump($variables);
    
extract($variables);
    eval(
"?>".$tema."<?");
}

function 
parsearTags($mensaje)
{
    
$mensaje str_replace("[citar]""<blockquote><hr width='100%' size='2'>"$mensaje);
    
$mensaje str_replace("[/citar]""<hr width='100%' size='2'></blockquote>"$mensaje);
    return 
$mensaje;
}

// funcion para validar email
function ValidaMail($pMail) {
    if (
ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@+([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$"$pMail ) ) {
       return 
true;
    } else {
echo 
"Inserte un E-mail valido"; exit();
    }
}

// minimo de carateres
function minimo($contenido) {

if (
strlen($contenido) < 3) {

echo 
"Su nombre de usuario debe contene almenos 3 caracteres";include('footer.php'); exit();

} else {

// echo "todo bien...";
return $contenido;
}  
}


function 
minimopass($contenido) {

if (
strlen($contenido) < 6) {

echo 
"Su contraseña debe tener al menos 6 caracteres";include('footer.php'); exit();

} else {

// echo "todo bien...";
return $contenido;
}  
}

// funcion para sanitizar variables
function limpiar($mensaje)
{
$mensaje htmlentities(stripslashes(trim($mensaje)));
$mensaje str_replace("'"," ",$mensaje);
$mensaje str_replace(";"," ",$mensaje);
$mensaje str_replace("$"," ",$mensaje);
return 
$mensaje;
}

function 
shout($nombre_usuario){
   if (
ereg("^[a-zA-Z0-9\-_]{3,20}$"$nombre_usuario)) {
//      echo "El campo $nombre_usuario es correcto<br>";
      
return $nombre_usuario;
   } else {
       echo 
"The Field $nombre_usuario is not valid<br>";include('footer.php');
exit();
   }





// universal cleaner function


function uc($mensaje)
{

   if (
ereg("^[a-zA-Z0-9\-_]{3,20}$"$mensaje)) {
//      echo "El campo $mensaje es correcto<br>";
$mensaje htmlentities(stripslashes(strtolower(trim($mensaje))));
$mensaje str_replace("'"," ",$mensaje);
$mensaje str_replace(";"," ",$mensaje);
$mensaje str_replace("$"," ",$mensaje);
return 
$mensaje;
   } else {
       echo 
"The Field $mensaje is not Valid<br>";include('footer.php');
exit();
   }

}








//funcion para añadir smylies

function caretos($texto,$ruta)
{
    
$i="<img src=\"$ruta/";
    
$i_="\" >";
    
$texto=str_replace(":)",$i."icon_smile.gif".$i_,$texto);
    
$texto=str_replace(":D",$i."icon_biggrin.gif".$i_,$texto);
    
$texto=str_replace("^^",$i."icon_cheesygrin.gif".$i_,$texto);

    
$texto=str_replace("xD",$i."icon_lol.gif".$i_,$texto);
    
$texto=str_replace("XD",$i."icon_lol.gif".$i_,$texto);

    
$texto=str_replace(":|",$i."icon_neutral.gif".$i_,$texto);
    
$texto=str_replace(":(",$i."icon_sad.gif".$i_,$texto);
    
$texto=str_replace(":'(",$i."icon_cry.gif".$i_,$texto);
    
$texto=str_replace(":O",$i."icon_surprised.gif".$i_,$texto);    
    
$texto=str_replace("B)",$i."icon_cool.gif".$i_,$texto);
    
$texto=str_replace("8|",$i."icon_rolleyes.gif".$i_,$texto);
    
$texto=str_replace("O_O",$i."icon_eek.gif".$i_,$texto);
    
$texto=str_replace(":P",$i."icon_razz.gif".$i_,$texto);
    
$texto=str_replace(":?",$i."icon_confused.gif".$i_,$texto);
    
$texto=str_replace("^:@",$i."icon_evil.gif".$i_,$texto);
    
$texto=str_replace("^_-",$i."icon_frown.gif".$i_,$texto);
    
$texto=str_replace("!(",$i."icon_mad.gif".$i_,$texto);
    
$texto=str_replace("^)",$i."icon_twisted.gif".$i_,$texto);
    
$texto=str_replace(";)",$i."icon_wink.gif".$i_,$texto);
    
$texto=str_replace(":B",$i."drool.gif".$i_,$texto);
    return 
$texto;
}

// ip real
function getRealIP()
{
   
   if( 
$_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
   {
      
$client_ip =
         ( !empty(
$_SERVER['REMOTE_ADDR']) ) ?
            
$_SERVER['REMOTE_ADDR']
            :
            ( ( !empty(
$_ENV['REMOTE_ADDR']) ) ?
               
$_ENV['REMOTE_ADDR']
               :
               
"unknown" );
   
      
// los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR
   
      
$entries split('[, ]'$_SERVER['HTTP_X_FORWARDED_FOR']);
   
      
reset($entries);
      while (list(, 
$entry) = each($entries))
      {
         
$entry trim($entry);
         if ( 
preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/"$entry$ip_list) )
         {
            
// http://www.faqs.org/rfcs/rfc1918.html
            
$private_ip = array(
                  
'/^0\./',
                  
'/^127\.0\.0\.1/',
                  
'/^192\.168\..*/',
                  
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
                  
'/^10\..*/');
   
            
$found_ip preg_replace($private_ip$client_ip$ip_list[1]);
   
            if (
$client_ip != $found_ip)
            {
               
$client_ip $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      
$client_ip =
         ( !empty(
$_SERVER['REMOTE_ADDR']) ) ?
            
$_SERVER['REMOTE_ADDR']
            :
            ( ( !empty(
$_ENV['REMOTE_ADDR']) ) ?
               
$_ENV['REMOTE_ADDR']
               :
               
"unknown" );
   }
   
   return 
$client_ip;
   
}

?>

Donde deberia indicar el encripotamiento??
  #7 (permalink)  
Antiguo 24/11/2010, 21:25
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Creo que por aca:


Código PHP:
function minimopass($contenido) {

if (
strlen($contenido) < 6) {

echo 
"Su contraseña debe tener al menos 6 caracteres";include('footer.php'); exit();

} else {

// echo "todo bien...";




return md5($contenido);






}  

__________________
la la la
  #8 (permalink)  
Antiguo 24/11/2010, 21:30
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Cita:
Iniciado por shamaka Ver Mensaje
Donde deberia indicar el encripotamiento??
Me huele a grito...
Ademas, en el manual esta bien explicado, supongo que el resto te queda a ti (determinar donde va cada md5())
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #9 (permalink)  
Antiguo 24/11/2010, 21:36
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Ok hermano, estudiare mejor el manual, otra cosa. Si quisiera verificar que las contraseñas se están encriptando, es decir, para saber que he hecho todo bien, que debo hacer. Ay alguna forma de saber que esta funcionado bien lo que he hecho.
  #10 (permalink)  
Antiguo 24/11/2010, 21:37
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Si, entrar a la base de datos y ver que paso
__________________
la la la
  #11 (permalink)  
Antiguo 24/11/2010, 21:40
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Eso, entrar a la DB y ver en la tabla si lo que pretendes encriptar esta en 32 caracteres al azar
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #12 (permalink)  
Antiguo 24/11/2010, 21:40
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Cita:
Iniciado por truman_truman Ver Mensaje
Si, entrar a la base de datos y ver que paso

Bien hermano muchas Gracias a todos, fueron de mucha ayuda! Ahora me pondré a estudiar mejor el manual para ver si mañana puedo encriptar mis contraseñas.

LatinBux esta a sus ordenes.

Hasta luego.
  #13 (permalink)  
Antiguo 24/11/2010, 21:44
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Por ultimo, si lo que quieres es encriptar para un login, al tratar de iniciar sesion tienes que hacer algo asi;

Código PHP:
if (md5($_POST['pass']) == $campo_enviado_del_form) {
//Pass correcta...
}else{
//Pass incorrecta

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #14 (permalink)  
Antiguo 24/11/2010, 21:51
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Cita:
Iniciado por Sourcegeek Ver Mensaje
Por ultimo, si lo que quieres es encriptar para un login, al tratar de iniciar sesion tienes que hacer algo asi;

Código PHP:
if (md5($_POST['pass']) == $campo_enviado_del_form) {
//Pass correcta...
}else{
//Pass incorrecta

Saludos!

Bien por ejemplo este es parte mi archivo login. (El primero es el original. El segundo lo he modificado.)

Código PHP:
require('funciones.php');
$username=uc($_POST['username']);
$password=uc($_POST['password']);

if (
$password==NULL) {
echo 
"La password no fue enviada";
}else{
require(
'config.php');
$query mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) {
echo 
"Login incorrecto" 


Código PHP:
require('funciones.php');
$username=uc($_POST['username']);
$password=uc($_POST['password']);

if (
md5 $password==NULL) {
echo 
"La password no fue enviada";
}else{
require(
'config.php');
$query mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) {
echo 
"Login incorrecto"


Esta bien así?
  #15 (permalink)  
Antiguo 24/11/2010, 21:55
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Como encriptar contraseñas con MD5 en PHP??

esto no vá :

if (md5 $password==NULL) {

tendría que ir por aca:

$password=uc($_POST['password']);
$password=md5($password);
__________________
la la la
  #16 (permalink)  
Antiguo 24/11/2010, 21:59
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Entendido. =) Esto quiere decir que estoy encriptando mi Login? Bueno lo probare! Luego les cuento como va.
  #17 (permalink)  
Antiguo 24/11/2010, 22:05
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Ya lo he hecho, ahora cuando pongo mi pass me dice que es incorrecto. Que debo hacer?
  #18 (permalink)  
Antiguo 24/11/2010, 22:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Cita:
Iniciado por truman_truman Ver Mensaje
$password=uc($_POST['password']);
$password=md5($password);
¿pero saben que tiene todo esto de malo?

Código PHP:
echo md5(''); // d41d8cd98f00b204e9800998ecf8427e 
si se fijan aún un valor nulo o vacío genera una cadena MD5 valida, por lo cual no tendría caso la seguridad...

el proceso debería ser mas lógico y limpio:
Código PHP:
$pass = ! empty($_POST['pass'])? $_POST['pass']: FALSE;

if (
$pass !== FALSE)
{
  
$pass_md5 md5(uc($pass));
  
$sql "SELECT * FROM usuarios WHERE pass = '$pass_md5'";

Edito: bueno, la explicación es sencilla... realizar la consulta siempre y cuando la entrada de datos sea correcta!!

Cita:
Iniciado por shamaka Ver Mensaje
Ya lo he hecho, ahora cuando pongo mi pass me dice que es incorrecto. Que debo hacer?
bueno, es obvio que va a estar mal... pues actualmente, ¿que tienes en la base de datos?

si no tienes la contraseña ya encriptada en tu base de datos es seguro que errará la consulta... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 24/11/2010 a las 22:12
  #19 (permalink)  
Antiguo 24/11/2010, 22:59
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Como encriptar contraseñas con MD5 en PHP??

Estancado en el mismo punto donde empece. Como le dije antes no tengo muchos conocimientos de programación, me he dado cuenta que ni lo básico, leer el manual es como haber leído un documento en japones.

Aun cuando encripto la contraseña en la base de dato sigue dando error. Le agradecería mucho a la persona que me pueda ayudar a encriptar mi contraseña. Solo díganme quien esta dispuesto a colaborar con mi Web e instalar esta opción.

Soy capaz de recompensarlo. En verdad me urge. Mi Web esta recibiendo mas de 300 visitantes diarios. la inaugure hace 8 días y ya cuento con mas de 280 usuarios registrados. (no se han registrado mas por la apariencia del sitio) Se que pronto uno de esos Hacker que se aprovechan tratara de hackearla y bueno perderé todo.

Acá les deje mi correo, por favor contáctenme si están interesados en ayudarme. [email protected]

Gracias por todo

Etiquetas: contraseñas, encriptar
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 18:48.