Vous avez une boutique en ligne ? Alors vous devez connaître les attaques CSRF. Pas de panique ! Dans ce guide, je vais vous expliquer simplement ce que c'est et comment vous en protéger avec quelques lignes de code.
01. C'est Quoi une Attaque CSRF ? (Expliqué Simplement)
Imaginez que vous êtes connecté à votre banque en ligne. Dans un autre onglet, vous visitez un site malveillant. Ce site pourrait faire faire à votre navigateur des actions sur votre compte bancaire à votre insu : virement, changement de mot de passe, etc.
C'est exactement pareil pour votre boutique en ligne ! Un client connecté pourrait, sans le savoir, passer une commande, modifier son profil ou faire d'autres actions juste en visitant un site pirate.
⚠️ Exemple Concret
Marie est connectée à votre boutique. Elle reçoit un email avec un lien "Cadeau gratuit !". En cliquant, sans le savoir, elle passe une commande de 100€ de produits qu'elle n'a jamais voulus. Le site malveillant a profité de sa session ouverte.
😱 Les Conséquences pour Votre Boutique
- → Commandes frauduleuses qui détruisent la confiance de vos clients
- → Modification de données sensibles (adresses, emails)
- → Perte de réputation et avis négatifs
- → Problèmes juridiques si des données clients sont compromises
02. La Solution : Les Tokens CSRF
Un token CSRF, c'est comme un code secret unique que votre serveur génère pour chaque utilisateur connecté. Ce code doit être inclus dans chaque action importante (achat, modification de profil, etc.).
🔐 Comment Ça Marche ?
- Connexion : Votre serveur génère un code secret aléatoire pour l'utilisateur
- Formulaire : Ce code est caché dans tous vos formulaires
- Validation : Quand l'utilisateur fait une action, le serveur vérifie que le bon code est présent
- Blocage : Si le code est absent ou faux, l'action est refusée
Pourquoi c'est efficace ? Un site malveillant ne peut pas connaître ce code secret car il est unique à votre site et à la session de l'utilisateur. Il ne peut donc pas créer de fausses requêtes valides !
03. Code Simple pour Débutants (PHP)
Voici comment protéger votre site en quelques étapes simples. Pas besoin d'être un expert !
📝 Étape 1 : Générer le Token
Créez un fichier csrf.php avec ce code :
<?php
// Démarrer la session (à faire UNE SEULE FOIS au début de votre site)
session_start();
// Générer un code secret si il n'existe pas
if (!isset($_SESSION['token_csrf'])) {
// Créer un code aléatoire très sécurisé
$_SESSION['token_csrf'] = bin2hex(random_bytes(32));
}
// Récupérer le token
function getToken() {
return $_SESSION['token_csrf'];
}
?>
🔨 Étape 2 : Ajouter le Token dans vos Formulaires
Dans TOUS vos formulaires (commande, modification profil, etc.) :
<?php
require_once 'csrf.php';
?>
<form action="passer-commande.php" method="POST">
<!-- Champ CACHÉ avec le token -->
<input type="hidden" name="token" value="<?php echo getToken(); ?>">
<!-- Vos champs normaux -->
<input type="text" name="adresse" placeholder="Votre adresse">
<button type="submit">Commander</button>
</form>
✅ Étape 3 : Vérifier le Token côté Serveur
Dans votre fichier qui traite la commande (passer-commande.php) :
<?php
require_once 'csrf.php';
// Vérifier si le token envoyé est le bon
$tokenRecu = $_POST['token'] ?? '';
if ($tokenRecu !== getToken()) {
// Token invalide = ATTAQUE !
die("Erreur de sécurité. Veuillez recharger la page.");
}
// Si on arrive ici, le token est bon !
// On peut traiter la commande en toute sécurité
$adresse = $_POST['adresse'];
// ... le reste de votre code
?>
💡 C'est tout ! Avec ces 3 étapes simples, votre boutique est protégée contre les attaques CSRF. Le code malveillant ne pourra jamais deviner votre token secret.
04. Les Erreurs à Éviter (Pour Débutants)
❌ Erreur #1 : Oublier des formulaires
TOUS vos formulaires qui modifient des données doivent avoir le token. Panier, profil, commentaires, tout !
❌ Erreur #2 : Token qui ne change jamais
Le token doit être régénéré après chaque connexion. Ajoutez unset($_SESSION['token_csrf']) après chaque login pour forcer un nouveau token.
❌ Erreur #3 : Oublier session_start()
Sans session_start() au début de vos fichiers PHP, les sessions ne fonctionnent pas et vos tokens non plus !
✅ Les Bonnes Pratiques
- ✓ Testez toujours vos formulaires après avoir ajouté les tokens
- ✓ Affichez un message clair si le token est invalide
- ✓ Gardez votre code simple et lisible
- ✓ Documentez vos protections pour vous en souvenir plus tard
05. Aller Plus Loin dans la Sécurité
Les tokens CSRF sont essentiels, mais ce n'est qu'une partie de la sécurité. Voici d'autres protections importantes pour votre e-commerce :
🔐 HTTPS Obligatoire
Votre site DOIT être en HTTPS (cadenas dans la barre d'adresse). C'est la base de la sécurité web. Sans ça, vos tokens peuvent être volés !
💾 Validation des Données
Vérifiez TOUJOURS ce que vos utilisateurs envoient. Email valide ? Numéro de téléphone correct ? Quantité positive ? Ne faites jamais confiance aveuglément.
🔒 Mots de Passe Sécurisés
Utilisez password_hash() en PHP pour sécuriser les mots de passe. JAMAIS en clair dans la base de données !
🛡️ Protection SQL
Utilisez PDO avec des requêtes préparées pour éviter les injections SQL. C'est aussi important que les tokens CSRF !
🎯 En Résumé : Protégez-vous Dès Aujourd'hui !
Avec le code simple que je vous ai montré, vous pouvez protéger votre boutique contre les attaques CSRF en moins d'une heure. Ne reportez pas cette protection à demain - vos clients comptent sur vous pour garder leurs données en sécurité.
La sécurité n'est pas un luxe, c'est une responsabilité. Commencez par les tokens CSRF, puis ajoutez progressivement les autres protections.
Arnaud Demailly
Fondateur de WebDem.fr
Développeur web passionné par la sécurité et la création de sites e-commerce performants. J'aide les entrepreneurs à créer des boutiques en ligne sécurisées et optimisées.