Table des matières
ToggleComprendre et prévenir les attaques CSRF en PHP/JS
Pendant mon cursus scolaire, nous avons eu la chance de nous intéresser au fonctionnement des attaques CSRF. Les attaques Cross-Site Request Forgery (CSRF) représentent une menace importante pour la sécurité des applications web. Dans cet article je vais détailler ce que j’ai appris dans mon tp, celui ci explore la vulnérabilité des sites face à de telles attaques, en mettant en lumière un cas pratique où des formulaires d'inscription, de connexion et de suppression de compte ont été exploités. Voici un résumé détaillé des concepts, de l'attaque elle-même, de son analyse et des solutions pour la prévenir.
Qu'est-ce qu'une attaque CSRF ?
Une attaque CSRF fait en sorte qu’un utilisateur authentifié sur un site web exécute des actions involontaires via une autre interface.
Le processus d'une attaque CSRF
Prenons l'exemple d'un utilisateur qui, après s'être inscrit et connecté à un site web, décide de supprimer son compte. Si un site malveillant incite cet utilisateur à cliquer sur un bouton, ce dernier pourrait en réalité exécuter une action non désirée, comme la suppression de son compte, sans le savoir. Le site malveillant exploite une faille du système, souvent via l'absence de vérification d'origine des requêtes, ce qui permet à un utilisateur de faire des actions qu'il n'avait pas l'intention d'effectuer.
Analyse de notre cas
Dans notre tp, nous avons eu l’occasion d’avoir un exemple concret : un projet web qui utilise des sessions basées sur des cookies PHP. Chaque fois qu'une requête est envoyée vers le serveur, le cookie est automatiquement transmis, sans aucune vérification de l'origine de la requête. De plus, le système ne met pas en place de mécanisme de protection tel que des tokens CSRF. Cela rend le site vulnérable aux attaques, car un attaquant peut forger une requête pour effectuer des actions à la place de l'utilisateur.
Comment prévenir les attaques CSRF ?
Pour se défendre contre les attaques CSRF, il est essentiel de mettre en place plusieurs mécanismes de sécurité :
- Implémentation de tokens CSRF : Lors de l'affichage d'un formulaire, il est crucial de générer un jeton unique côté serveur, à inclure dans le formulaire. Ce jeton doit être validé à chaque soumission pour vérifier l'intégrité de la requête.
- Vérification de l'origine des requêtes : Il est nécessaire de vérifier que les requêtes proviennent d'une source légitime en contrôlant les en-têtes
Referer
ouOrigin
.
Referer : Contient l'URL de la page précédente d'où provient la requête.
Origin : Contient seulement le domaine (protocole + hôte) de la page d'où provient la requête.
Ces en-têtes sont utilisés pour vérifier que les requêtes viennent bien d'un site légitime, ce qui aide à prévenir les attaques CSRF.
- Limiter la durée de vie des cookies de session : Réduire la validité des sessions permet de limiter les risques liés à un cookie volé ou à une session compromise. Ainsi, un attaquant ne pourrait exploiter une session active que pendant une période restreinte.
Conclusion
Ce tp nous a permis de mieux comprendre les attaques CSRF et de nous familiariser avec les bonnes pratiques pour les prévenir. La sécurité dans le développement web est essentielle, et l'application de ces mécanismes de protection est indispensable pour garantir la confiance des utilisateurs et la sécurité des données.
Les captures d’écran du projet




