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
Sécuriser les API REST dans vos sites WordPress : bonnes pratiques et conseils
17 juillet 2026 L'API REST de WordPress permet de communiquer avec votre site à distance, mais elle expose aussi des surfaces d'attaque potentielle si elle n'est pas sécurisée. Voici comment protéger efficacement votre site tout en conservant ses fonctionnalités.
Sécuriser les API web PHP : bonnes pratiques pour éviter les failles courantes
14 juillet 2026 Les API web dominent les échanges d'informations entre applications, mais elles sont aussi une cible privilégiée des attaquants. Cet article détaille comment sécuriser efficacement vos API PHP pour éviter les vulnérabilités fréquentes.
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.