Personnalisation de la protection des tests de cartes Stripe dans WPForms

WPForms 2.0 a introduit 3 couches de protection automatiques qui détectent et bloquent les attaques de test de cartes contre l'intégration Stripe intégrée : détection de surtension de faible montant, un plafond de taux sur l'ensemble du site et la télémétrie de session Stripe Radar. Le test de carte (également appelé carding) est une attaque où des scripts sondent des numéros de carte volés avec de petites charges pour trouver ceux qui fonctionnent.

Les protections s'exécutent automatiquement avec des valeurs par défaut optimisées et n'ont pas d'interface utilisateur de paramètres. Chaque seuil et comportement est contrôlé via les filtres PHP documentés sur cette page. Si vous recherchez plutôt des instructions générales de configuration Stripe, consultez notre documentation Stripe.

Prérequis :

  • WPForms 2.0 ou version ultérieure. Les protections s'appliquent aux paiements Stripe dans les versions gratuites et payantes.
  • Par défaut, les protections ne s'exécutent que sur les paiements en mode réel. Les paiements en mode test Stripe les ignorent, sauf si vous optez pour le filtre wpforms_stripe_run_protections_in_test_mode.

Comment fonctionnent les protections

  • Détection de surtension de faible montant : Compte les tentatives de paiement Stripe à un montant seuil (par défaut 3,00 $) ou inférieur sur l'ensemble du site dans une fenêtre glissante. Lorsque le nombre dépasse la limite, tous les paiements Stripe de faible montant sont bloqués pendant une durée déterminée. Les paiements supérieurs au seuil continuent de traiter. WPForms envoie 1 e-mail à l'administrateur du site et affiche un avis d'administration dismissible par période de blocage.
  • Plafond de taux global : Compte les tentatives de carte échouées (erreurs CardException de Stripe) sur tous les visiteurs du site. Lorsque les échecs dépassent le plafond, tous les paiements Stripe sont bloqués jusqu'à l'expiration de la fenêtre. Cela étend la limite de taux par IP qui est fournie avec WPForms depuis la version 1.8.2, et les 2 limites fonctionnent indépendamment.
  • Sessions Stripe Radar : Crée une session Radar lorsqu'un formulaire Stripe se charge et la joint à la méthode de paiement. Cela alimente des signaux comportementaux dans le propre moteur de fraude de Stripe afin que son score de risque devienne plus précis. Il s'agit d'une télémétrie passive sans seuils et sans blocage du côté de WPForms.

Lorsqu'un paiement est bloqué par la détection de surtension, le client voit « Le traitement du paiement est temporairement indisponible. Veuillez réessayer plus tard ou contacter le propriétaire du site. » Lorsque le plafond de taux global bloque les paiements, le client voit « Impossible de traiter le paiement, veuillez réessayer plus tard. » Les blocages sont levés automatiquement à l'expiration de leur durée.

Filtres de détection de surtension de faible montant

FiltreTypeDéfautDescription
wpforms_stripe_low_amount_surge_enabledboolvraiActive ou désactive la détection de surtension.
wpforms_stripe_low_amount_thresholdfloat3.00Plafond du montant. Les paiements à ce montant ou inférieur sont comptabilisés dans la surtension et sont bloqués pendant qu'un blocage est actif.
wpforms_stripe_low_amount_surge_countint10Nombre de tentatives de faible montant dans la fenêtre qui déclenchent un blocage.
wpforms_stripe_low_amount_surge_windowint120Durée de la fenêtre glissante en secondes.
wpforms_stripe_low_amount_block_durationintHOUR_IN_SECONDSDurée du blocage, en secondes.
wpforms_stripe_low_amount_surge_email_tochaîneget_option( 'admin_email' )Destinataire de l'e-mail d'alerte de test de carte.

Par exemple, un site de dons très fréquenté qui reçoit légitimement de nombreux petits paiements peut souhaiter un nombre de pics plus élevé et un blocage plus court :

// Allow 30 low-amount attempts per window before blocking.
add_filter( 'wpforms_stripe_low_amount_surge_count', function () {
	return 30;
} );

// Shorten the block from 1 hour to 15 minutes.
add_filter( 'wpforms_stripe_low_amount_block_duration', function () {
	return 15 * MINUTE_IN_SECONDS;
} );

// Send the alert email to a dedicated inbox.
add_filter( 'wpforms_stripe_low_amount_surge_email_to', function () {
	return '[email protected]';
} );

Remarque : L'état du pic est stocké dans les transitoires wpforms_stripe_low_amount_counter, wpforms_stripe_low_amount_block et wpforms_stripe_low_amount_notified. Si vous modifiez ces valeurs de filtre pendant qu'un bloc est actif, supprimez les transitoires pour que les nouvelles valeurs prennent effet immédiatement.

Filtres de taux globaux

FiltreTypeDéfautDescription
wpforms_stripe_rate_limit_global_enabledboolvraiActive ou désactive le plafonnement des taux sur l'ensemble du site.
wpforms_stripe_rate_limit_global_allowed_attemptsint50Nombre de tentatives de carte échouées sur l'ensemble du site avant que tous les paiements Stripe ne soient bloqués.
wpforms_stripe_rate_limit_global_expires_inintHOUR_IN_SECONDSDurée de la fenêtre de comptage et du blocage, en secondes.

La limite de taux par IP préexistante conserve ses propres filtres et n'est pas affectée par la portée globale : wpforms_stripe_rate_limit_allowed_attempts (par défaut 3) et wpforms_stripe_rate_limit_expires_in (par défaut 6 heures).

Par exemple, pour augmenter le plafond mondial sur une boutique à fort trafic :

// Allow 200 failed card attempts per hour site-wide before blocking.
add_filter( 'wpforms_stripe_rate_limit_global_allowed_attempts', function () {
	return 200;
} );

Filtre de session Stripe Radar

Les sessions Radar envoient des données de télémétrie comportementale de la page de paiement au moteur de prévention de la fraude de Stripe, Stripe Radar. WPForms crée la session au chargement du formulaire dans les flux Card Element et Payment Element et la joint à la méthode de paiement qu'il crée. L'appel est fait au mieux : si l'API Radar est indisponible, le paiement se déroule normalement sans session.

FiltreTypeDéfautDescription
wpforms_stripe_radar_session_enabledboolvraiActive ou désactive la création de sessions Radar.
// Disable Radar session telemetry.
add_filter( 'wpforms_stripe_radar_session_enabled', '__return_false' );

Remarque : Stripe ne joint pas les sessions Radar aux paiements effectués via Stripe Link. Il s'agit d'une limitation de la plateforme Stripe, pas d'un paramètre WPForms.

Tester les protections en mode test Stripe

Les protections ignorent le mode test Stripe par défaut afin que les flux de développement normaux ne soient pas affectés par de faux positifs. Pour les exercer en mode test, optez pour cette option et abaissez les seuils afin que les blocages se déclenchent rapidement :

// Run the protections in Stripe test mode.
add_filter( 'wpforms_stripe_run_protections_in_test_mode', '__return_true' );

// Trigger the surge block on the 3rd low-amount attempt.
add_filter( 'wpforms_stripe_low_amount_surge_count', function () {
	return 2;
} );

// Auto-unblock after 30 seconds for fast retries.
add_filter( 'wpforms_stripe_low_amount_block_duration', function () {
	return 30;
} );

Avec ces filtres actifs, soumettez 3 paiements de 2 $ ou moins en utilisant une carte de test Stripe. La 3ème tentative est bloquée, l'e-mail d'alerte est envoyé et l'avis d'administrateur apparaît. Un paiement supérieur au seuil est toujours traité pendant le blocage. Consultez notre guide pour tester les paiements Stripe pour configurer le mode test et les cartes de test.

Si un blocage d'un test précédent est toujours actif après avoir modifié les valeurs des filtres, effacez l'état stocké avec WP-CLI :

wp transient delete wpforms_stripe_low_amount_block
wp transient delete wpforms_stripe_low_amount_counter
wp transient delete wpforms_stripe_low_amount_notified