Personalização da Proteção de Teste de Cartão Stripe no WPForms

O WPForms 2.0 introduziu 3 camadas automáticas de proteção que detetam e bloqueiam ataques de teste de cartões contra a integração Stripe incorporada: deteção de picos de baixo valor, um limite de taxa para todo o site e telemetria de sessão Stripe Radar. Testes de cartões (também chamados de carding) são um ataque onde scripts testam números de cartões roubados com pequenas cobranças para descobrir quais funcionam.

As proteções funcionam automaticamente com predefinições ajustadas e não têm interface de utilizador para configurações. Cada limite e comportamento é controlado através dos filtros PHP documentados nesta página. Se estiver à procura de instruções gerais de configuração Stripe, consulte a nossa documentação Stripe.

Requisitos:

  • WPForms 2.0 ou posterior. As proteções aplicam-se a pagamentos Stripe em ambas as versões, gratuita e paga.
  • Por defeito, as proteções só funcionam em pagamentos em modo real. Pagamentos em modo de teste Stripe ignoram-nas, a menos que opte por ativá-las com o filtro wpforms_stripe_run_protections_in_test_mode.

Como Funcionam as Proteções

  • Deteção de Picos de Baixo Valor: Conta as tentativas de pagamento Stripe em ou abaixo de um valor limite (padrão $3.00) em todo o site numa janela deslizante. Quando a contagem excede o limite, todos os pagamentos Stripe de baixo valor são bloqueados por um determinado período. Pagamentos acima do limite continuam a ser processados. O WPForms envia 1 e-mail ao administrador do site e mostra um aviso de administração dispensável por período de bloqueio.
  • Limite de Taxa Global: Conta as tentativas de cartão falhadas (erros CardException da Stripe) em todos os visitantes em todo o site. Quando as falhas excedem o limite, todos os pagamentos Stripe são bloqueados até que a janela expire. Isto estende o limite de taxa por IP que tem sido incluído no WPForms desde a versão 1.8.2, e os 2 limites funcionam independentemente.
  • Sessões Stripe Radar: Cria uma sessão Radar quando um formulário Stripe carrega e anexa-a ao método de pagamento. Isto fornece sinais comportamentais ao próprio motor de fraude da Stripe para que a sua pontuação de risco se torne mais precisa. É telemetria passiva sem limites e sem bloqueios no lado do WPForms.

Quando um pagamento é bloqueado pela deteção de picos, o cliente vê "O processamento do pagamento está temporariamente indisponível. Por favor, tente novamente mais tarde ou contacte o proprietário do site." Quando o limite de taxa global bloqueia pagamentos, o cliente vê "Não foi possível processar o pagamento, por favor, tente novamente mais tarde." Os bloqueios são levantados automaticamente quando a sua duração expira.

Filtros de Deteção de Picos de Baixo Valor

FiltroTipoPadrãoDescrição
wpforms_stripe_low_amount_surge_enabledbooleanoverdadeiroAtiva ou desativa a deteção de picos.
wpforms_stripe_low_amount_thresholdfloat3.00Limite superior. Pagamentos neste valor ou abaixo dele contam para o pico e são bloqueados enquanto um bloqueio está ativo.
wpforms_stripe_low_amount_surge_countint10Número de tentativas de baixo valor dentro da janela que acionam um bloqueio.
wpforms_stripe_low_amount_surge_windowint120Duração da janela deslizante em segundos.
wpforms_stripe_low_amount_block_durationintHORA_EM_SEGUNDOSDuração do bloqueio, em segundos.
wpforms_stripe_low_amount_surge_email_tostringget_option( 'admin_email' )Destinatário do e-mail de alerta de teste de cartão.

Por exemplo, um site de doações movimentado que recebe legitimamente muitos pagamentos pequenos pode querer uma contagem de picos mais alta e um bloqueio mais curto:

// 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: O estado do pico é armazenado nos transientes wpforms_stripe_low_amount_counter, wpforms_stripe_low_amount_block e wpforms_stripe_low_amount_notified. Se alterar estes valores de filtro enquanto um bloqueio estiver ativo, elimine os transientes para que os novos valores entrem em vigor imediatamente.

Filtros Globais de Taxa Máxima

FiltroTipoPadrãoDescrição
wpforms_stripe_rate_limit_global_enabledbooleanoverdadeiroAtiva ou desativa o limite de taxa em todo o site.
wpforms_stripe_rate_limit_global_allowed_attemptsint50Número de tentativas falhadas de cartão em todo o site antes de todos os pagamentos Stripe serem bloqueados.
wpforms_stripe_rate_limit_global_expires_inintHORA_EM_SEGUNDOSDuração da janela de contagem e do bloqueio, em segundos.

O limite de taxa por IP pré-existente mantém os seus próprios filtros e não é afetado pelo âmbito global: wpforms_stripe_rate_limit_allowed_attempts (padrão 3) e wpforms_stripe_rate_limit_expires_in (padrão 6 horas).

Por exemplo, para aumentar o limite global numa loja com tráfego elevado:

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

Filtro de Sessão Stripe Radar

As sessões Radar enviam telemetria comportamental da página de pagamento para o Stripe Radar, o motor de prevenção de fraudes da Stripe. O WPForms cria a sessão ao carregar o formulário nos fluxos do Elemento de Cartão e do Elemento de Pagamento e anexa-a ao método de pagamento que cria. A chamada é feita com o melhor esforço: se a API Radar estiver indisponível, o pagamento prossegue normalmente sem uma sessão.

FiltroTipoPadrãoDescrição
wpforms_stripe_radar_session_enabledbooleanoverdadeiroAtiva ou desativa a criação de sessões Radar.
// Disable Radar session telemetry.
add_filter( 'wpforms_stripe_radar_session_enabled', '__return_false' );

Nota: A Stripe não anexa sessões Radar a pagamentos concluídos através do Stripe Link. Esta é uma limitação da plataforma Stripe, não uma configuração do WPForms.

Testar as Proteções em Modo de Teste Stripe

As proteções ignoram o modo de teste Stripe por defeito para que os fluxos de trabalho de desenvolvimento normais não sejam afetados por falsos positivos. Para as exercitar em modo de teste, opte por elas e reduza os limiares para que os bloqueios sejam acionados 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;
} );

Com esses filtros ativos, envie 3 pagamentos de 2€ ou menos usando um cartão de teste Stripe. A 3ª tentativa é bloqueada, o email de alerta é enviado e o aviso de administrador aparece. Um pagamento acima do limiar ainda processa durante o bloqueio. Veja o nosso guia para testar pagamentos Stripe para configurar o modo de teste e os cartões de teste.

Se um bloqueio de um teste anterior ainda estiver ativo após alterar os valores do filtro, limpe o estado armazenado com 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