2 votes

Cette méthode de stockage des mots de passe est-elle sûre ?

Je me demandais juste si la création d'un hachage de mot de passe en utilisant un sel créé à partir du mot de passe lui-même est sûre à utiliser. Voici un exemple en php :

<?php
$pass = $_GET['pass'];
$salt = hash('whirlpool', $pass);
$pass = md5(hash('whirlpool', $salt.$pass));
echo $pass;
?>

Est-ce que cela a un sens ?

Regards.

5voto

Michael Points 763

Le but d'un sel est de rendre le mot de passe de chacun unique. Ainsi, dans ce cas, le fait de hacher leur mot de passe et de l'ajouter comme sel rendrait le mot de passe final haché de 2 utilisateurs identiques lorsque le même mot de passe original est donné. Il est préférable de donner à chaque utilisateur un sel aléatoire et de le stocker juste à côté de son mot de passe dans la base de données.

3voto

sahid Points 2172

Il n'est pas nécessaire de hacher et re-hacher et re-rehacher le mot de passe.

Utiliser un sel avec un bon algorithme de hachage est une bonne chose, mais vous devez forcer vos utilisateurs à envoyer un mot de passe fort avec un minimum de taille et avec des caractères alphanumériques.

notes :

  • L'utilisation de sha1 est préférable à celle de md5.
  • Utiliser un bon sel (merci @John Bartholomew)
  • Obligez vos utilisateurs à créer un mot de passe fort

0voto

Sumair Zafar Points 72

Je le fais comme ça

<?php

$my_key = "myapp";
$temp_pwd = htmlentities(trim($_POST['password']));
$hashed = sha1($my_key.$temp_pwd);

save $hashed in database on signup
and with every login attemp merge the input password value with your key and make a hash of it and than compare with database password value

?>

0voto

Rhyous Points 2163

Vous pouvez protéger à la fois votre mot de passe et votre sel.

  1. Utilisez SHA256 ou une version plus élevée (2012) et dans les années à venir, elle devra être plus élevée.

  2. Utilisez un sel différent pour chaque utilisateur.

  3. Utilisez un sel calculé.

  4. Créez une Sel de 16 à 32 octets et stockez-la dans la base de données, appelée "DBSalt".

  5. Créez n'importe quel algorithme pour manipuler le sel, mais gardez l'algorithme uniquement dans le code. Même quelque chose d'aussi simple que DBSalt + 1 est utile car si quelqu'un s'empare de votre base de données, il n'a pas réellement le bon sel car le bon sel est calculé.

  6. Calculez votre mot de passe comme suit :

    CreateHash(saltAlgorithm(dbSalt), password) ;

  7. Vous pouvez renforcer la sécurité en disposant d'une liste d'algorithmes qui manipulent la DBSalt de différentes manières. Chaque fois qu'un utilisateur change son mot de passe, vous utilisez également un calcul différent de la DBSalt.

  8. Vous pouvez renforcer la sécurité en faisant en sorte que ces algorithmes soient stockés sur des sur des serveurs web externes à votre système. Ainsi, si votre base de données et votre code sont code sont piratés, ils n'ont toujours pas votre sel.

    1. Vous pouvez également augmenter la sécurité en ayant un sel avant, et après, ou les deux, et la base de données seule ne fournit pas ces informations.

Les commentaires du genre "Vous pouvez augmenter la sécurité en..." sont sans fin. N'oubliez pas que chaque fois que vous ajoutez de la sécurité, vous ajoutez de la complexité, des coûts, etc...

Comment saler efficacement un mot de passe stocké sous forme de hachage dans une base de données ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X