Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jalbtercero en 21 Mayo 2016, 13:42 pm



Título: Log in seguro
Publicado por: jalbtercero en 21 Mayo 2016, 13:42 pm
Como podria hacer este login mas seguro:

Código
  1.  
  2. <center><p>
  3. <?php
  4. require("connect_db.php");
  5. $nombre = $_POST['userid'];
  6. $clave = $_POST['pswrd'];
  7. $credencial = $_POST['cred'];
  8.  
  9. $sql2=mysql_query("SELECT * FROM credencial");
  10. $sql=mysql_query("SELECT * FROM login WHERE username='$nombre'");
  11.  
  12.  
  13. if($f=mysql_fetch_array($sql)){
  14. if($clave==$f['pass']){
  15. $_SESSION["usuario"] = $nombre;
  16. header("Location: inicio.php");
  17. }else{
  18. echo '<script>alert("CONTRASEÑA INCORRECTA")</script> ';
  19.  
  20. echo "<script>location.href='log.html'</script>";
  21. }
  22. }else{
  23.  
  24. echo '<script>alert("ESTE USUARIO NO EXISTE, PORFAVOR REGISTRESE PARA PODER INGRESAR")</script> ';
  25.  
  26. echo "<script>location.href='log.html'</script>";
  27.  
  28. }
  29.  
  30.  
  31.  
  32.  
  33.  
  34. ?>
  35. </p>
  36.  
  37.  
  38.  


Título: Re: Log in seguro
Publicado por: AlbertoBSD en 21 Mayo 2016, 13:51 pm
Código
  1. $sql=mysql_query("SELECT * FROM login WHERE username='$nombre'");

Eres vulnerable a SQLi te pueden hackear la base de datos si usas ese codigo, tienes que sanitizar la variable nombre para que no puedan ejecutar comandos en el Servidor mysql...

Yo lo que hago es guardar un HASH del password con el que se registraron, y despues comparo los hash.

Tambien le quito unos cuantos caracteres al hash del principio y del final...

Código
  1. $user_pass = substr(hash("sha256",$post_mysql['pwd']),2,60);
  2. if( strcmp ($user_pass,$row['pwd']) === 0) {
  3. ...
  4. }
  5. else {
  6. //Error password incorrecto
  7. }

Y con eso evitas que si en algun momento te hackean la base de datos puedan saber la contraseña real de la persona en cuestion..


Saludos!