Le formulaire de paiement s’affiche deux fois pendant la commande
Un client saisit sa carte, la page se recharge, et le vrai formulaire de paiement lui redemande les mêmes informations : cette double saisie n’est pas un bug d’affichage, c’est la signature d’un vol de données de carte côté navigateur.
Pourquoi la double saisie est le symptôme le plus fiable
Un client vous écrit qu’il a dû saisir deux fois sa carte : la première page a semblé se recharger, puis le formulaire de paiement habituel lui a redemandé les mêmes informations. La commande est bien passée, le montant est correct, un seul débit apparaît. Côté back-office, rien ne cloche.
C’est précisément la signature d’une technique que Sansec a documentée en février 2026 sous le nom de « double-tap skimming », détectée le 16 février 2026 sur la boutique d’une chaîne de supermarchés figurant dans le top 10 mondial — environ 100 milliards d’euros de chiffre d’affaires annuel, plus de 10 000 magasins dans 25 pays — dont une partie de l’infrastructure e-commerce tourne sous PrestaShop. Un faux formulaire de paiement s’affiche d’abord et capture les données de carte, puis le vrai formulaire prend le relais et la commande se termine normalement. La plupart des clients acceptent cette double saisie sans se douter que les données ont déjà été volées.
Le symptôme est fiable parce qu’il est structurel. Le vol a besoin que le client remplisse un formulaire qui n’aboutit à rien, donc il a besoin de lui faire recommencer. Côté marchand, aucune alerte, aucun taux d’échec anormal, aucune ligne étrange dans les commandes : l’information ne remonte que par un client qui trouve ça bizarre, ou par un remboursement pour fraude un mois plus tard.
Ce qui doit vous faire ouvrir une vérification
- Un client décrit avoir saisi ses informations de carte deux fois pendant une même commande.
- Un client signale un écran de paiement dont l’apparence ne correspond pas tout à fait à celle que vous connaissez.
- Plusieurs contestations pour fraude à la carte concernent des clients ayant commandé sur la même période.
- Votre prestataire de paiement ou votre banque vous signale une concentration anormale de fraudes sur vos commandes.
- Un fichier de thème porte une date de modification qu’aucune intervention de votre part n’explique.
Où regarder : les fichiers du thème, puis la base de données
Sansec cite deux endroits côté marchand. D’abord des balises de script injectées dans les fichiers du thème, en particulier _partials/head.tpl sur PrestaShop : c’est le gabarit chargé sur toutes les pages, y compris celles du tunnel de commande. Ensuite, du JavaScript qui surveille les champs de saisie et stocke les valeurs dans le localStorage du navigateur avec un préfixe, pour les reprendre et les envoyer ailleurs. Je ne publie pas l’adresse de destination.
La base de données est l’autre endroit à ouvrir. PrestaShop a documenté en janvier 2025 une vague d’attaques exploitant des injections SQL dans des modules tiers, pas dans le cœur, pour insérer du contenu malveillant dans la valeur de configuration PS_SHOP_NAME. Cette valeur est ensuite utilisée pour charger du JavaScript non autorisé qui capture les saisies des clients. La vérification recommandée est directe : lire PS_SHOP_NAME en base et vérifier qu’elle ne contient rien d’autre que le nom de votre boutique. PrestaShop recommande par ailleurs de mettre à jour tous les modules natifs et tiers, d’utiliser un préfixe de base de données personnalisé plutôt que ps_, et de déployer un pare-feu applicatif.
Les deux chemins racontent la même histoire : un gabarit de thème et une valeur de configuration sont deux endroits que personne ne relit jamais, et qui décident pourtant de ce qui s’exécute sur la page de paiement.
Le paiement hébergé chez le prestataire ne met pas à l’abri
Beaucoup de marchands considèrent le sujet réglé parce que la saisie de carte se fait dans un cadre ou sur une page hébergée par le prestataire de paiement, et que les numéros ne transitent jamais par leur serveur. C’est exact pour le formulaire lui-même. Ça ne l’est pas pour la page qui l’entoure.
Dans le scénario de la double saisie, le code injecté n’attaque pas le champ du prestataire : il affiche sa propre surcouche avant, dans la page que vous contrôlez. Le client voit un écran de paiement crédible, dans sa langue et à votre marque — Sansec note que ces surcouches sont désormais soigneusement localisées et que les outils d’IA générative en accélèrent la production. Tant que la page qui héberge le paiement peut être modifiée, l’intégration hébergée ne protège pas du vol.
Ce que je regarde, dans cet ordre
-
Comparer les fichiers du thème à une référence saine
Une copie de déploiement, une sauvegarde antérieure ou un dépôt Git servent de point de comparaison. Toute balise de script ajoutée dans un gabarit chargé sur toutes les pages est à traiter comme une compromission jusqu’à preuve du contraire.
-
Relever les dates de modification sur le serveur
Les fichiers modifiés récemment sans intervention de votre part cadrent la fenêtre de l’incident : ils donnent une date de début à chercher dans les journaux d’accès et dans l’historique des connexions au back-office.
-
Lire la valeur PS_SHOP_NAME en base
Sur PrestaShop, cette valeur de configuration doit contenir le nom de la boutique et rien d’autre. Tout fragment de balise, de script ou d’adresse à cet endroit est un signal direct, et il oriente vers un module tiers vulnérable comme point d’entrée.
-
Inventorier les scripts réellement chargés sur la page de paiement
Ouvrez le tunnel de commande dans un navigateur et listez les scripts chargés. Chacun doit se rattacher à un module, à un thème ou à un outil que vous avez décidé d’installer. Ce que vous ne pouvez pas rattacher doit être justifié avant d’être laissé en place.
-
Traiter les accès avant les fichiers
Nettoyer un gabarit sans renouveler les accès (back-office, FTP/SFTP, base de données, hébergement) revient à laisser la porte ouverte : le code réapparaît. Sur le cas documenté par Sansec, le skimmer était toujours actif le 20 février 2026, après six tentatives de notification. Ce type d’infection ne s’arrête pas tout seul.
Ce que cette page ne contient pas
Je n’écris ici aucune méthode permettant de reproduire l’attaque, aucun code injecté, aucune adresse de destination et aucun moyen de repérer des boutiques vulnérables. Cette page sert à constater, vérifier et corriger, pas à outiller qui que ce soit.
Si l’un des signes décrits est présent, la suite n’est pas la correction d’un fichier isolé : c’est un nettoyage complet, le renouvellement de tous les accès, et la mise en place d’un contrôle d’intégrité sur la page de paiement pour que la prochaine modification soit détectée le jour même, pas un mois plus tard par une contestation bancaire.
La suite, selon ce que vous avez trouvé
-
Vérifier si mon site est compromis
La vérification complète, au-delà de la seule page de paiement.
-
Nettoyer un site infecté
Ce que suppose un nettoyage qui ne laisse pas le code revenir.
-
Problèmes de paiement PrestaShop
Les autres causes possibles d’un tunnel de commande qui se comporte mal.
-
Tunnel de commande
Ce que recouvre exactement le terme, étape par étape.
Décrivez votre besoin en 1 minute
Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.