Photo by Towfiqu barbhuiya on Unsplash
Sécurisation des mots de passe en PHP (password_hash & password_verify)
Sécuriser ses mots de passe, un casse-tête ? Pas avec PHP !
Table of contents
Avec tous nos comptes en ligne, protéger nos mots de passe est vital. Réseaux sociaux, banques, sites d'e-commerce... on ne rigole pas avec la confidentialité ! Heureusement, PHP nous donne des outils puissants pour sécuriser tout ça. Découvrons ensemble les fonctions magiques password_hash et password_verify. Elles vont changer notre vie !
Avant ça, faisons un point sur les risques :
Les attaques par force brute, ce fléau ! Des programmes qui testent toutes les combinaisons possibles jusqu'à trouver le mot de passe. Si celui-ci est faible, il est vite compromis.
Les attaques par dictionnaire. Pareil mais avec des mots courants plutôt que toutes les combinaisons. Un mot de passe basé sur un terme bateau, c'est le jackpot pour les pirates !
Le stockage à l'ancienne, sans protection. Si les mots de passe sont en clair dans la base de données, c'est open bar pour les hackeurs.
Heureusement, password_hash va sécuriser tout ça. Comment ?
// Connexion de l'utilisateur
$email = $_POST['email'];
$motDePasse = $_POST['motdepasse'];
// Récupération du hash en base de données
$requete = "SELECT motdepasse FROM utilisateurs WHERE email = :email";
$stmt = $db->prepare($requete);
$stmt->execute(['email' => $email]);
$utilisateur = $stmt->fetch();
$motDePasseHache = $utilisateur['motdepasse'];
// Vérification avec password_verify
if (password_verify($motDePasse, $motDePasseHache)) {
// Connexion réussie !
} else {
// Mot de passe incorrect
}
En créant un "hash", une empreinte unique du mot de passe impossible à retrouver. On stocke ce hash plutôt que le mot de passe en clair. Lors de la connexion, password_verify compare le mot de passe saisi au hash. Si ça matche, la porte s'ouvre !
Les avantages ?
Des algorithmes costauds qui rendent le crackage ultra difficile. Même en cas de fuite, les vrais mots de passe restent secrets ! Password_hash ralentit aussi les attaques en demandant plus de ressources aux pirates. Bien fait pour eux ! Le sel ajouté renforce encore la sécurité.
En plus, quelques bonnes pratiques :
Imposer des mots de passe complexes à vos users. En parlant de mots de passe complexes, mon outil Robuscode pourrait être une solution cool. Lettres, chiffres, caractères spéciaux, tout y est !
L'authentification deux facteurs, pour une couche supplémentaire. Code reçu sur un autre appareil ou application tierce, ça ne rigole plus !
Chiffrer les communications entre le navigateur et le serveur. HTTPS, je te salue.
Mettre à jour PHP et les libs utilisées. Pas question de laisser traîner des failles !
En somme, pour des mots de passe inviolables, faites confiance aux super pouvoirs de PHP ! Password_hash et password_verify vous couvrent. En suivant les bonnes pratiques, vos utilisateurs dorment sur leurs deux oreilles. Et les pirates font la grimace !