2011-04-22 3 views
1

Je suis relativement nouveau à la sécurité php, et pour mon site, j'étais un utilisateur et je me connectais, et je veux ajouter md5 à leurs mots de passe, mais je ne trouve nulle part où a un guide clair sur ce qui doit être ajouté à l'inscription, et ce qui doit être ajouté aux fichiers de connexion, et/ou la base de données, comme je dis que je suis assez nouveau pour php en termes de sécurité web, donc je suis besoin d'aide, voici une partie de ce que j'ai sur mon formulaire d'inscription:Essayer de hacher mes mots de passe, mais sans succès

$error = $user = $pass = ""; 
if (isset($_SESSION['user'])) destroySession(); 

if (isset($_POST['user'])) 
{ 
    $user = sanitizeString($_POST['user']); 
    $pass = sanitizeString($_POST['pass']); 


    if ($user == "" || $pass == "") 
    { 
     $error = "Not all fields were entered<br /><br />"; 
    } 
    else 
    { 
     $query = "SELECT * FROM members WHERE user='$user'"; 

     if (mysql_num_rows(queryMysql($query))) 
     { 
      $error = "Username already taken<br /><br />"; 
     } 
     else 
     { 
      $query = "INSERT INTO members VALUES('$user', '$pass')"; 
      queryMysql($query); 
      die("<h4>Account created</h4>Please Log in."); 
     } 

    } 
} 

J'ai juste besoin d'un exemple ou un bon guide de ce que je dois faire pour le faire fonctionner correctement.

+0

Je ne pas le salage, je hachage simplement le mot de passe avec SHA-1, et il est assez à moins que la NSA met un oeil sur ma base de données de l'utilisateur , ce qui est peu probable. – gd1

+0

Je pense que vous devriez vraiment lire sur les déclarations préparées et plus loin sur les solutions de «haute abstraction» comme Doctrine. – hamczu

+1

@Giacomo: Non. Vous pouvez cracker SHA1 dans le nuage dans un délai raisonnable (heures ou jours). Le mot de passe doit toujours être correctement salé et haché avec une forte fonction de hachage comme sha512. – hamczu

Répondre

4

Je pense que vous cherchez à saler, puis hacher vos mots de passe. Ajoutez simplement une chaîne de votre choix au début (et si vous le souhaitez, à la fin) de votre mot de passe avant de le hacher avec MD5.

par exemple.

$pass = 'mypassword'; 
$salt = 'S%gh3578'; //anything you want 
$pepper = 'w890rrk'; //anything you want 
$query = "INSERT INTO members VALUES('$user', md5('".$salt.$pass.$pepper."'))"; 
queryMysql($query); 

Cela stocker le mot de passe dans la base de données en utilisant le cryptage MD5 salé qui ne peut pas être inversé à l'aide d'une table de recherche de mots de passe communs en utilisant le chiffrement MD5 sans sel.

Pour vérifier si un mot de passe est valide, vous faites quelque chose de similaire:

$passToCheck = 'something'; 
$correctMD5 = (retrieve hash from db) 
if($salt.$passToCheck.$pepper == $correctMD5) 
{  
    //valid login 
} else { 
    //login failure 
} 
+0

acclamations homme, a travaillé un régal, –

-1

Vous pouvez par exemple md5 ($ pass) avant de vous insérer et lorsque l'utilisateur se connecte, vous devez à nouveau md5 et vérifier que les valeurs sont les mêmes. Il n'y a aucun moyen de dé-md5, donc vous vérifierez généralement l'entrée md5 par rapport à la valeur DB md5.

+1

Je suis d'accord que le dépassement de sécurité est inutile, mais les choses ne sont pas comme vous l'avez dit. md5 peut être inversé dans le sens où, supposons que l'utilisateur choisisse un mot de passe commun, alors si vous volez le DB, vous pouvez simplement vérifier une liste de mots de passe largement utilisés avec leurs hachages md5 et savoir quel est le mot de passe pour d'autres services Web. Cependant, cela n'arrive pas tous les jours. Cependant, pensez-y. – gd1

+0

Ce que j'ai dit ici est vrai. Vous devez vérifier le md5 du mot de passe affiché (lors de la connexion) avec le md5 dans la base de données. Il n'y a aucun moyen (par programme) pour de-md5! Je sais que vous pouvez rechercher des md5 populaires sur certains sites Web, mais ce n'était pas lié à mon commentaire. Il demandait comment procéder ... – Jesper

+0

vous l'avez fait trop facile. Je suis trop convaincu que trop de sécurité est un peu gênant et inutile, mais vous ne pouvez pas lui donner l'impression que md5 ($ pass) = SÛR. – gd1

Questions connexes