Par Valentin Brosseau / @c4software
| id | username | password |
| 1 | admin | adminSuperMotDePasse |
| 2 | user | user |Bon signe ?
Les mots de passe sont en clair.
Une fuite de la base = tous les comptes exposés d'un coup.
// À l'inscription
$hash = password_hash($mdp, PASSWORD_DEFAULT);
// À la connexion
password_verify($saisi, $hash); // true / falseUne fonction à sens unique : impossible de retrouver le mot de passe.
Pour un mot de passe, c'est un hash. Toujours.
Un formulaire de connexion qu'on peut rejouer à l'infini…
À votre avis, comment ralentir l'attaquant ?
L'objectif n'est pas de rendre l'attaque impossible, mais trop coûteuse.
<a href="/supprimer?id=1">Supprimer</a>Un lien piégé dans un email, cliqué par un admin connecté…
et l'action s'exécute à son insu.
GET.<input type="hidden" name="token" value="...">Phishing, fuite ailleurs, réutilisation…
Le mot de passe seul ne suffit plus.
Deux preuves au lieu d'une :
HttpOnly + Secure + SameSite.session_regenerate_id() après connexion (fixation de session)..env, jamais dans le code.password_hash / password_verify), jamais en clair.GET.Place au TP 🚀