Contrairement aux attaques XSS qui cherchent à dérober des informations personnelles, les attaques CSRF, pour Cross Site Request Forgery, cherchent à faire exécuter des actions à l'insu de l'utilisateur. Le terme CSRF pourrait être traduit par "Requêtes Inter-site".
Mais bon à quoi ça ressemble concrètement ?
L'attaquant va chercher à ce qu'un administrateur de votre site (une fois connecté à votre back office) lance la page souhaitée, par exemple https://www.votre-site.fr/admin/index.php?action=tout-supprimer.
Cet appel peut être masqué simplement à l'intérieur d'une page d'un site tiers déjà infecté :
<div style="display:none;">
<img src="https://www.votre-site.fr/admin/index.php?action=tout-supprimer" />
</div>
Alors comment se protéger contre les CSRF ?
Il n'existe pas de technique parfaitement fiable pour vous protéger des CSRF mais on peut rendre les attaques plus complexes à faire. Une première option est de vérifier le referer c'est-à-dire vérifier que vos pages soient lancées uniquement depuis une provenance dont le nom de domaine est connu et maitrisé par vous. Une deuxième option est d'ajouter un système de jeton.
<?php
// On lance la session
session_start();
// On génère un numéro de jeton aléatoire
$jeton = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
// On enregistre le jeton en session
$_SESSION['jeton'] = $jeton;
// On affiche notre formulaire avec le jeton en champ caché
echo '<form>
<input type="hidden" name="jeton" value="' . $jeton . '" />
<input type="submit" value="Valider" />
</form>';
?>
Ensuite une fois le formulaire posté, on compare le jeton envoyé et le jeton sauvegardé en session.
Si les deux jetons sont identiques, on peut effectuer l'action importante :
<?php
// On lance la session
session_start();
// On compare nos deux jetons
if (!empty($_SESSION['jeton']) AND !empty($_POST['jeton']) AND ($_SESSION['token'] == $_POST['token']))
{
// Vérification terminée
// On peut effectuer l'action importante
}
else
{
echo "Erreur de vérification des jetons";
}
?>
Il existe ensuite bien d'autres techniques de protection qui peuvent être ajoutées :
- Ajouter un captcha
- Utiliser un système de saisie de numéro avec la souris comme sur les systèmes d'identification bancaire
- Redemander la saisie du mot de passe
- Un code par SMS

Par Thibaut Pietri
Derniers articles
SEO vs GEO : pourquoi le trafic des moteurs IA ne ressemble pas au trafic Google
29 mai 2026 Le SEO reste indispensable pour générer du trafic depuis Google. Mais avec l’arrivée des moteurs IA comme ChatGPT, Gemini, Perplexity ou Copilot, une nouvelle logique apparaît : le GEO.
Audit GEO : 10 points pour savoir si votre site est prêt pour les moteurs IA
22 mai 2026 Le GEO, ou Generative Engine Optimization, consiste à optimiser un site pour qu’il soit mieux compris, cité et recommandé par les moteurs de recherche IA comme ChatGPT, Gemini, Perplexity ou les nouvelles réponses générées de Google. Mais votre site est-il vraiment prêt ? Voici une checklist en 10 points essentiels pour réaliser un premier audit GEO.
Protéger vos formulaires sans réduire votre taux de conversion : quelles solutions captcha choisir ?
30 avril 2026 Les captchas sont devenus indispensables pour protéger les formulaires d’un site web contre le spam et les robots. Formulaire de contact, inscription, demande de devis… tous peuvent être ciblés. Mais toutes les solutions ne se valent pas.