Authentification
Prouver qui est l'utilisateur, puis décider ce qu'il a le droit de faire.
Authentification
Un formulaire de connexion qui répond « cet email n'existe pas » en 12 millisecondes et « mot de passe incorrect » en 180 millisecondes révèle gratuitement quels comptes existent sur votre service. L'attaquant n'a même pas besoin de lire le message : la différence de temps suffit, parce que le chemin « email inconnu » saute l'étape de hachage. Sur une liste de dix millions d'adresses issues d'une fuite précédente, il extrait en quelques heures la liste exacte de vos utilisateurs, puis concentre ses tentatives sur eux.
Ce genre de détail résume l'authentification : le mécanisme principal est simple à écrire, et ce sont les périphéries qui ouvrent les brèches. Un cookie sans l'attribut HttpOnly, une vérification de rôle appliquée sur le corps de la requête plutôt que sur le jeton, une déconnexion qui n'invalide rien, une comparaison de secret avec ===. Cette leçon traite le chemin nominal rapidement pour consacrer l'essentiel à ces périphéries, parce que c'est là que se produisent les incidents.
Mots de passe
Un mot de passe ne se chiffre pas, il se hache — l'opération doit être irréversible. Et pas avec SHA-256 : ces fonctions sont conçues pour être rapides, ce qui est exactement le contraire de ce qu'on veut. Utilisez une fonction lente et paramétrable, argon2id de préférence, bcrypt à défaut.
Commentaires
Les commentaires sont alimentés par GitHub Discussions
Connectez-vous avec GitHub pour participer à la discussion