Hachage sécurisé et sel pour mots de passe en PHP : comment faire correctement ?
Bonjour à tous. Je suis un développeur PHP débutant et j'ai un problème avec le stockage des mots de passe des utilisateurs. Actuellement, j'utilise simple md5(), mais j'ai lu que ce n'est pas sécurisé. J'ai essayé d'ajouter un sel, mais je ne suis pas sûr de le faire correctement.
Voici mon code actuel pour l'inscription :
```php
$password = $_POST['password'];
$salt = 'my_secret_salt';
$hashed_password = md5($salt . $password);
// je sauvegarde $hashed_password dans la base de données
```
Et pour la vérification lors de la connexion :
```php
$password = $_POST['password'];
$salt = 'my_secret_salt';
$hashed_password = md5($salt . $password);
// je compare avec celui dans la base de données
```
Problèmes que je vois :
1. Le sel est statique — s'il est découvert, tous les mots de passe sont compromis.
2. md5() est trop rapide, il est facile à deviner.
3. Il n'y a pas de protection contre les attaques temporelles (timing attack).
Indiquez-moi comment implémenter correctement le hachage des mots de passe en PHP ? Quelles fonctions utiliser ? Faut-il générer un sel unique pour chaque utilisateur et où le stocker ? Je vous remercie.