Le cadenas à 3 ou à 10 molettes
Un cadenas à 3 molettes a 1 000 combinaisons : on l'ouvre en une soirée en essayant tout. À 10 molettes, il y en a 10 milliards. Chaque caractère ajouté à un mot de passe multiplie le travail de l'attaquant.
Ce qui rend un mot de passe solide (longueur, entropie, phrases de passe), les attaques par force brute, par dictionnaire et par bourrage d'identifiants, une politique de mots de passe raisonnable, son contrôle en PHP, le stockage avec password_hash, le blocage des tentatives répétées et la double authentification.
Le mot de passe reste la serrure la plus utilisée du web. Le développeur décide de presque tout : ce qu'il accepte à l'inscription, comment il le stocke, ce qui se passe après dix essais ratés, comment on le réinitialise. Une bonne politique protège les utilisateurs... sans les pousser à coller leur mot de passe sur un post-it.
Un robot essaie des mots de passe à la chaîne sur la page de connexion, en commençant par les plus courants.
Elles se font en ligne (contre le formulaire de connexion : on les freine en bloquant les tentatives) ou hors ligne (sur une base de hachages volée : seul un hachage lent comme bcrypt les freine).
Les recommandations actuelles (NIST, ANSSI, DGSSI) vont dans le même sens :
| Règle | Pourquoi |
|---|---|
| Longueur minimale (12 ou plus, 8 si double authentification) | c’est le facteur le plus important |
| Refuser les mots de passe courants ou déjà fuités | ce sont les premiers essayés |
| Accepter tous les caractères, espaces compris, et les phrases longues | encourager les phrases de passe |
| Limiter les tentatives (blocage temporaire, délai croissant, CAPTCHA) | rendre la force brute en ligne inutile |
| Double authentification pour les comptes importants | un mot de passe volé ne suffit plus |
| Pas de changement forcé à date fixe, mais changement en cas de fuite | les changements forcés donnent Souk2025! puis Souk2026! |
| Pas d’indice de mot de passe, pas de « question secrète » | les réponses se devinent ou se trouvent sur les réseaux sociaux |
password_hash($mdp, PASSWORD_DEFAULT) et password_verify (module 07, leçon C.5). Jamais de mot de passe en clair, ni dans la base, ni dans les journaux, ni dans les e-mails.Un cadenas à 3 molettes a 1 000 combinaisons : on l'ouvre en une soirée en essayant tout. À 10 molettes, il y en a 10 milliards. Chaque caractère ajouté à un mot de passe multiplie le travail de l'attaquant.
Utiliser la même clé pour la maison, la voiture et le bureau : si on la perd une fois, tout est ouvert. Réutiliser un mot de passe sur plusieurs sites, c'est pareil, et les pirates essaient systématiquement les mots de passe volés ailleurs.
La page s'affichera ici.
Le navigateur demandera /inscription.php au serveur, qui exécutera le PHP et renverra du HTML.
Consignes 0 / 6
Combien de combinaisons pour (a) un code de 4 chiffres, (b) 8 caractères parmi 26 minuscules, (c) 12 caractères parmi 94 caractères imprimables ? À un milliard d'essais par seconde, combien de temps pour tout essayer ?
(a) 10^4 = 10 000 : instantané. (b) 26^8 ≈ 2,1 × 10^11 : environ 3,5 minutes. (c) 94^12 ≈ 4,8 × 10^23 : environ 15 millions d'années. La longueur compte plus que tout : chaque caractère ajouté multiplie le nombre de combinaisons. Contre un hachage lent (bcrypt), le nombre d'essais par seconde s'effondre encore.
Décrivez un processus sûr de « mot de passe oublié » pour Souk Atlas.
1. L'utilisateur donne son e-mail ; la page répond toujours la même chose (« si ce compte existe, un e-mail a été envoyé ») pour ne pas révéler quels comptes existent. 2. Le serveur crée un jeton aléatoire (bin2hex(random_bytes(32))), en stocke le hachage avec une expiration courte (30 minutes) et l'envoie dans un lien. 3. Le lien n'est utilisable qu'une fois ; le nouveau mot de passe suit la politique et est haché avec password_hash. 4. Toutes les sessions ouvertes sont fermées et l'utilisateur reçoit un e-mail de confirmation. On n'envoie jamais l'ancien mot de passe (le site ne le connaît pas) ni un nouveau mot de passe en clair.