L'authentification est un système essentiel pour sécuriser l'accès à votre application web. Elle permet de vérifier l'identité d'un utilisateur et de protéger les données sensibles.
Dans ce cours, vous apprendrez à :
• Hacher les mots de passe de manière sécurisée avec password_hash()
• Vérifier les mots de passe avec password_verify()
• Créer un formulaire d'inscription complet
• Implémenter un système de connexion sécurisé
• Protéger des pages avec les sessions
• Gérer la déconnexion proprement
PHP fournit une fonction sécurisée pour hacher (transformer) les mots de passe de manière irréversible.
Mot de passe original : monmotdepasse123 Hash sécurisé : $2y$10$X8ZQe7O7r7r2abcdefghijklmnopqrstuvwxyz123456789ABCDEFG
Important : Le hash est différent à chaque fois (grâce au "salt" automatique) !
Comparer un mot de passe avec son hash de manière sécurisée.
password_verify() compare le mot de passe en clair avec le hash de manière sécurisée. Ne jamais comparer directement avec == !
Créer un compte utilisateur avec validation complète.
Système de connexion sécurisé avec sessions.
Vérifier qu'un utilisateur est connecté avant d'afficher le contenu.
Détruire la session complètement et rediriger.
session_start() : Démarrer la session$_SESSION = [] : Vider les variablessetcookie() : Supprimer le cookie (optionnel mais recommandé)session_destroy() : Détruire la sessionheader('Location: ...') : RedirigerRégénérer l'ID de session après une connexion réussie.
Une attaque où un hacker force l'utilisateur à utiliser un ID de session connu. En régénérant l'ID après la connexion, on empêche cette attaque.
Table users pour stocker les comptes utilisateurs.
password_hash()password_verify()session_regenerate_id()session_start()session_start()session_destroy()password_hash() et password_verify()htmlspecialchars() sur toutes les données affichéessession_regenerate_id() après connexion réussie
Objectifs de ce cours :
✅ Comprendre pourquoi ne JAMAIS stocker les mots de passe en clair
✅ Utiliser password_hash() pour sécuriser les mots de passe
✅ Implémenter un système d'inscription complet avec validation
✅ Créer un système de connexion sécurisé avec sessions
✅ Protéger des pages avec vérification de session
✅ Gérer la déconnexion proprement
✅ Se protéger contre le session fixation
Points clés à retenir :
• password_hash() transforme le mot de passe en code secret illisible (hash)
• Même si un héron vole le hash, il ne peut pas retrouver le mot de passe original !
• Chaque hash est unique grâce au "salt" automatique
• password_verify() compare le mot de passe saisi avec le hash de manière sécurisée
• Les sessions stockent les informations de l'utilisateur connecté
• session_regenerate_id() empêche les attaques de session fixation
• Toujours vérifier $_SESSION['user_id'] sur les pages protégées
• Messages d'erreur vagues : "Email ou mot de passe incorrect" (pas "Cet email n'existe pas")
• Min 8 caractères pour le mot de passe, mais 12+ c'est mieux !
Exercice pratique :
1. Créez une table users dans votre base de données
2. Créez un fichier register.php avec formulaire d'inscription
3. Implémentez la validation et le hachage du mot de passe
4. Créez un fichier login.php avec système de connexion
5. Créez une page protégée dashboard.php qui vérifie la session
6. Testez le système complet : inscription → connexion → accès au dashboard → déconnexion
7. Essayez d'accéder au dashboard sans être connecté (vous devez être redirigé vers login)
