Hachage sécurisé et salage pour les mots de passe en PHP
Bonjour à tous ! Je suis un développeur PHP débutant et j'essaie de comprendre le stockage sécurisé des mots de passe des utilisateurs. Actuellement, j'utilise MD5 avec un sel, mais on m'a dit que ce n'était pas sécurisé. Mon code actuel ressemble à ceci :
```php
function createPassword($password) {
$salt = 'my_very_secret_salt_12345';
return md5($salt . $password);
}
function checkPassword($password, $hash) {
$salt = 'my_very_secret_salt_12345';
return md5($salt . $password) === $hash;
}
```
Je comprends que MD5 est obsolète, mais je ne sais pas par quoi le remplacer. J'ai entendu parler de bcrypt, password_hash et password_verify, mais je ne comprends pas comment les utiliser correctement.
Questions principales :
1. Comment générer correctement un sel pour chaque mot de passe ?
2. Faut-il stocker le sel séparément et comment le transmettre lors de la vérification ?
3. Quels algorithmes sont actuellement considérés comme sécurisés en PHP ?
4. Comment se protéger contre les attaques par force brute et les rainbow tables ?
Je serais reconnaissant pour des exemples de code détaillés avec des explications. Je veux comprendre non seulement "comment"