Résumé IA
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
CardExceptionde 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
| Filtre | Type | Défaut | Description |
|---|---|---|---|
wpforms_stripe_low_amount_surge_enabled | bool | vrai | Active ou désactive la détection de surtension. |
wpforms_stripe_low_amount_threshold | float | 3.00 | Plafond 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_count | int | 10 | Nombre de tentatives de faible montant dans la fenêtre qui déclenchent un blocage. |
wpforms_stripe_low_amount_surge_window | int | 120 | Durée de la fenêtre glissante en secondes. |
wpforms_stripe_low_amount_block_duration | int | HOUR_IN_SECONDS | Durée du blocage, en secondes. |
wpforms_stripe_low_amount_surge_email_to | chaîne | get_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
| Filtre | Type | Défaut | Description |
|---|---|---|---|
wpforms_stripe_rate_limit_global_enabled | bool | vrai | Active ou désactive le plafonnement des taux sur l'ensemble du site. |
wpforms_stripe_rate_limit_global_allowed_attempts | int | 50 | Nombre 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_in | int | HOUR_IN_SECONDS | Duré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.
| Filtre | Type | Défaut | Description |
|---|---|---|---|
wpforms_stripe_radar_session_enabled | bool | vrai | Active 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
Articles associés
- Comment installer et utiliser le module complémentaire Stripe avec WPForms
- Tester les paiements Stripe
- Un guide complet des types de champs de paiement dans WPForms (voir l'option Prix minimum, la défense recommandée qui rend les tests de cartes à faible montant non rentables)
- Documentation Stripe Radar