La sécurité des formulaires est cruciale en développement web. Les données envoyées par les utilisateurs peuvent contenir du code malveillant, des tentatives d'injection SQL, ou du JavaScript dangereux (attaques XSS).
Dans ce cours, nous allons apprendre à valider les données (vérifier qu'elles sont correctes) et à les sécuriser (les protéger contre les attaques). La règle d'or : ne jamais faire confiance aux données utilisateur !
Définition : Vérifier que les données sont présentes et au bon format.
trim() pour enlever les espaces au début et à la fin.
Définition : Vérifier qu'une adresse email est valide avec filter_var().
XSS (Cross-Site Scripting) : Injection de code JavaScript malveillant dans une page.
htmlspecialchars() avant d'afficher des données utilisateur.
CSRF (Cross-Site Request Forgery) : Forcer un utilisateur à exécuter une action non désirée.
Objectifs de ce cours :
✅ Comprendre les risques de sécurité (XSS, CSRF)
✅ Valider les données avec filter_var() et preg_match()
✅ Protéger contre les attaques XSS avec htmlspecialchars()
✅ Implémenter des tokens CSRF pour sécuriser les formulaires
✅ Utiliser password_hash() pour hasher les mots de passe
Points clés à retenir :
• NEVER TRUST USER INPUT - ne jamais faire confiance aux données utilisateur
• Toujours utiliser htmlspecialchars() avant d'afficher des données
• Valider côté serveur (la validation JavaScript peut être contournée)
• Utiliser filter_var() pour valider emails, URLs, nombres
• Implémenter des tokens CSRF pour les actions sensibles
• password_hash() pour les mots de passe, JAMAIS MD5 ou SHA1
• trim() pour enlever les espaces inutiles
• empty() vérifie si une variable est vide
Checklist de sécurité :
✅ Validation côté serveur (obligatoire)
✅ htmlspecialchars() pour afficher les données utilisateur
✅ filter_var() pour valider emails, URLs, nombres
✅ Tokens CSRF pour les formulaires sensibles
✅ password_hash() et password_verify() pour les mots de passe
✅ HTTPS pour transmettre des données sensibles
✅ Limiter les tentatives de soumission (rate limiting)
✅ Requêtes préparées PDO pour les bases de données
Exercice pratique :
1. Créez un formulaire d'inscription avec nom, email, mot de passe
2. Validez que tous les champs sont remplis
3. Validez l'email avec filter_var()
4. Validez le mot de passe (8+ caractères, maj, min, chiffre)
5. Ajoutez un token CSRF
6. Utilisez htmlspecialchars() pour afficher les données
7. Hashez le mot de passe avec password_hash()
