Personalizzazione della protezione dei test delle carte Stripe in WPForms

WPForms 2.0 ha introdotto 3 livelli di protezione automatici che rilevano e bloccano gli attacchi di test delle carte contro l'integrazione Stripe integrata: rilevamento di picchi di importo basso, un limite di frequenza a livello di sito e telemetria della sessione Stripe Radar. Il test delle carte (chiamato anche carding) è un attacco in cui gli script sondano numeri di carte rubate con piccoli addebiti per trovare quelli che funzionano.

Le protezioni vengono eseguite automaticamente con impostazioni predefinite ottimizzate e non hanno un'interfaccia utente per le impostazioni. Ogni soglia e comportamento è controllato tramite i filtri PHP documentati in questa pagina. Se invece stai cercando istruzioni generali sulla configurazione di Stripe, consulta la nostra documentazione Stripe.

Requisiti:

  • WPForms 2.0 o versioni successive. Le protezioni si applicano ai pagamenti Stripe sia nelle versioni gratuite che a pagamento.
  • Per impostazione predefinita, le protezioni vengono eseguite solo sui pagamenti in modalità live. I pagamenti in modalità di test di Stripe le saltano a meno che non si attivi con il filtro wpforms_stripe_run_protections_in_test_mode.

Come funzionano le protezioni

  • Rilevamento di picchi di importo basso: conta i tentativi di pagamento Stripe pari o inferiori a un importo di soglia (predefinito $3,00) in tutto il sito in una finestra scorrevole. Quando il conteggio supera il limite, tutti i pagamenti Stripe di importo basso vengono bloccati per una durata prestabilita. I pagamenti superiori alla soglia continuano a elaborarsi. WPForms invia 1 email all'amministratore del sito e mostra un avviso di amministrazione ignorabile per ogni periodo di blocco.
  • Limite di frequenza globale: conta i tentativi di carta non riusciti (errori CardException di Stripe) da parte di tutti i visitatori a livello di sito. Quando i fallimenti superano il limite, tutti i pagamenti Stripe vengono bloccati fino alla scadenza della finestra. Questo estende il limite di frequenza per IP che è stato fornito con WPForms dalla versione 1.8.2, e i 2 limiti funzionano in modo indipendente.
  • Sessioni Stripe Radar: crea una sessione Radar quando un modulo Stripe viene caricato e la collega al metodo di pagamento. Ciò fornisce segnali comportamentali al motore di frode di Stripe, rendendo più precisa la sua valutazione del rischio. Si tratta di telemetria passiva senza soglie e senza blocchi dal lato WPForms.

Quando un pagamento viene bloccato dal rilevamento di picchi, il cliente visualizza "L'elaborazione del pagamento non è temporaneamente disponibile. Riprova più tardi o contatta il proprietario del sito." Quando il limite di frequenza globale blocca i pagamenti, il cliente visualizza "Impossibile elaborare il pagamento, riprova più tardi." I blocchi vengono rimossi automaticamente alla scadenza della loro durata.

Filtri per il rilevamento di picchi di importo basso

FiltroTipoPredefinitoDescrizione
wpforms_stripe_low_amount_surge_enabledboolveroAttiva o disattiva il rilevamento di picchi.
wpforms_stripe_low_amount_thresholdfloat3.00Soffitto dell'importo. I pagamenti pari o inferiori a questo importo contano ai fini del picco e vengono bloccati mentre un blocco è attivo.
wpforms_stripe_low_amount_surge_countint10Numero di tentativi di importo basso all'interno della finestra che attivano un blocco.
wpforms_stripe_low_amount_surge_windowint120Lunghezza della finestra scorrevole in secondi.
wpforms_stripe_low_amount_block_durationintORE_IN_SECONDIDurata del blocco, in secondi.
wpforms_stripe_low_amount_surge_email_tostringget_option( 'admin_email' )Destinatario dell'email di avviso di test della carta.

Ad esempio, un sito di donazioni molto attivo che riceve legittimamente molti piccoli pagamenti potrebbe desiderare un conteggio di picco più alto e un blocco più breve:

// 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]';
} );

Nota: Lo stato di picco è memorizzato nei transienti wpforms_stripe_low_amount_counter, wpforms_stripe_low_amount_block e wpforms_stripe_low_amount_notified. Se si modificano questi valori di filtro mentre un blocco è attivo, eliminare i transienti in modo che i nuovi valori abbiano effetto immediato.

Filtri globali del limite di tariffa

FiltroTipoPredefinitoDescrizione
wpforms_stripe_rate_limit_global_enabledboolveroAttiva o disattiva il limite di tariffa a livello di sito.
wpforms_stripe_rate_limit_global_allowed_attemptsint50Numero di tentativi di pagamento falliti a livello di sito prima che tutti i pagamenti Stripe vengano bloccati.
wpforms_stripe_rate_limit_global_expires_inintORE_IN_SECONDIDurata della finestra di conteggio e del blocco, in secondi.

Il limite di tariffa per IP preesistente mantiene i propri filtri e non è influenzato dallo scope globale: wpforms_stripe_rate_limit_allowed_attempts (predefinito 3) e wpforms_stripe_rate_limit_expires_in (predefinito 6 ore).

Ad esempio, per aumentare il limite globale su un negozio ad alto traffico:

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

Filtro sessione Stripe Radar

Le sessioni Radar inviano telemetria comportamentale dalla pagina di pagamento a Stripe Radar, il motore di prevenzione frodi di Stripe. WPForms crea la sessione al caricamento del modulo sia nei flussi Card Element che Payment Element e la allega al metodo di pagamento che crea. La chiamata è best-effort: se l'API Radar non è disponibile, il pagamento procede normalmente senza sessione.

FiltroTipoPredefinitoDescrizione
wpforms_stripe_radar_session_enabledboolveroAttiva o disattiva la creazione della sessione Radar.
// Disable Radar session telemetry.
add_filter( 'wpforms_stripe_radar_session_enabled', '__return_false' );

Nota: Stripe non allega sessioni Radar ai pagamenti completati tramite Stripe Link. Questa è una limitazione della piattaforma Stripe, non un'impostazione di WPForms.

Test delle protezioni in modalità di test Stripe

Le protezioni saltano la modalità di test Stripe per impostazione predefinita in modo che i normali flussi di lavoro di sviluppo non siano influenzati da falsi positivi. Per esercitarle in modalità di test, acconsenti e abbassa le soglie in modo che i blocchi si attivino rapidamente:

// 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;
} );

Con questi filtri attivi, invia 3 pagamenti di $2 o meno utilizzando una carta di test Stripe. Il terzo tentativo viene bloccato, viene inviata l'email di avviso e appare l'avviso dell'amministratore. Un pagamento superiore alla soglia viene comunque elaborato durante il blocco. Vedi la nostra guida ai test dei pagamenti Stripe per la configurazione della modalità di test e delle carte di test.

Se un blocco da un test precedente è ancora attivo dopo aver modificato i valori dei filtri, cancella lo stato memorizzato con 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