Explorer
KNOW-ANT-018

Anti-Pattern : Controller de paiement custom recevant les données brutes de carte bancaire

Domaine
cybersecu
Type
anti-pattern
Priorité
P2

Parent : [[INDEX-CYBERSECU]]

Anti-Pattern : Controller de paiement custom recevant les données brutes de carte bancaire

Description

Créer un controller de paiement custom (Security.php, 1,6 Ko) qui reçoit le numéro de carte complet (PAN), le CVV, la date d'expiration et le nom du titulaire via POST, les fait transiter en clair par le serveur, puis les relaie vers un processeur de paiement (Singularity) via un formulaire caché auto-soumis. Cette pratique viole PCI-DSS et permet l'interception des données bancaires.

Exemple réel - Archive Ygg

// Security.php — Controller CodeIgniter (1,6 Ko)
// Reçoit via POST :
// - PAN (numéro de carte complet)
// - CVV
// - Date d'expiration
// - Nom du titulaire
// 
// Les données transitent EN CLAIR sur le serveur YGG
// Puis relayées vers le processeur Singularity via formulaire caché
// Redirection silencieuse vers google.com si token invalide (anti-analyse)

Témoignage : "Après avoir payé du free leech la semaine dernière par PayPal, aujourd'hui 4000E de matériel de son ont été commandé chez Thomann et livré à une boutique inexistante du 93 sous le nom de Kevin. Ce PayPal n'avait pas été utilisé depuis plus d'un an sauf pour YGG." — u/TatonTatonne, octobre 2024

Conséquences

  • Interception : Le serveur voit TOUTES les données bancaires
  • Fraude : Vol de numéros de carte, achats frauduleux
  • PCI-DSS violation : Non-conformité, amendes potentielles
  • Perte de confiance : Utilisateurs victimes de fraudes après paiement

Quand c'est acceptable

JAMAIS. Les données bancaires ne doivent JAMAIS transiter par le serveur du marchand.

Solution

  • Utiliser un checkout hébergé par le processeur (Stripe Checkout, PayPal Smart Buttons)
  • Rediriger l'utilisateur vers la page de paiement du processeur
  • Utiliser des tokens (Stripe Elements, PayPal Vault)
  • Le serveur ne reçoit qu'un token de confirmation, jamais les données brutes

Voir KNOW-PAT-074 — Détection de skimming bancaire.

Références