quelqu'un peut-il me montrer ou expliquer comment insérer un mot de passe dans une base de données au format md5? même si vous pouvez simplement me diriger dans la bonne direction ou quelque chose, je vous en serais reconnaissant, car je ne suis nouveau que par mysql, merci.
$query="INSERT INTO ptb_users (id,
user_id,
first_name,
last_name,
email )
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."',
'".$password."'
)";
mysql_query($query) or dieerr();
$result = mysql_query("UPDATE ptb_users SET ptb_users.user_id=ptb_users.id");
utilisez MD5
,
$query="INSERT INTO ptb_users (id,
user_id,
first_name,
last_name,
email )
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."',
MD5('".$password."')
)";
mais MD5
n'est pas sécurisé. Utilisez SHA2
.
N'utilisez pas MD5
car il n'est pas sécurisé. Je recommanderais d'utiliser SHA
ou bcrypt
avec un salt
:
SHA256('".$password."')
Darren Davies a partiellement raison de dire que vous devriez utiliser un sel - son affirmation selon laquelle MD5 n'est pas sécurisé pose plusieurs problèmes.
Vous avez dit que vous devez insérer le mot de passe en utilisant un hash Md5, mais cela ne nous dit pas vraiment pourquoi. Est-ce parce que c'est le format utilisé lors de la validation du mot de passe? Avez-vous un contrôle sur le code qui valide le mot de passe?
Le problème avec l'utilisation d'un sel est qu'il évite le problème où deux utilisateurs ont le même mot de passe - ils auront également le même hachage - ce qui n'est pas souhaitable. En utilisant un sel différent pour chaque mot de passe, cela ne se produit pas (avec de très grands volumes de données, il existe toujours un risque de collision résultant de deux mots de passe différents - mais nous l'ignorerons pour l'instant).
Ainsi, vous pouvez soit générer une valeur aléatoire pour le sel et la stocker également dans l'enregistrement, soit utiliser certaines des données que vous possédez déjà, telles que le nom d'utilisateur:
$query="INSERT INTO ptb_users (id,
user_id,
first_name,
last_name,
email )
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."',
MD5('"$user_id.$password."')
)";
(Je suppose que vous avez correctement échappé à toutes ces chaînes plus tôt dans votre code)
Vous pouvez utiliser MD5 () dans mysql ou md5 () dans php. Pour utiliser salt, ajoutez-le au mot de passe avant d’exécuter md5, par exemple:
$salt ='my_string';
$hash = md5($salt . $password);
Il est préférable d'utiliser un sel différent pour chaque mot de passe. Pour cela, vous devez enregistrer votre sel en db (et aussi en hash). Pendant l'authentification, l'utilisateur enverra son identifiant et le passera. Vous trouverez son hash et son sel dans db et découvrez:
if ($hash == md5($salt . $_POST['password'])) {}
si vous voulez utiliser le cryptage md5, vous pouvez le faire dans votre script php
$pass = $_GET['pass'];
$newPass = md5($pass)
puis insérez-le dans la base de données de cette façon, cependant, MD5 est une méthode de cryptage à sens unique et est presque impossible à décrypter sans difficulté