Resumo de IA
WPForms 2.0 introduziu 3 camadas de proteção automáticas que detectam e bloqueiam ataques de teste de cartão contra a integração Stripe integrada: detecção de pico de baixo valor, um limite de taxa em todo o site e telemetria de sessão do Stripe Radar. Teste de cartão (também chamado de carding) é um ataque onde scripts testam números de cartão roubados com pequenas cobranças para encontrar aqueles que funcionam.
As proteções são executadas automaticamente com padrões ajustados e não possuem interface de configurações. Cada limite e comportamento é controlado por meio dos filtros PHP documentados nesta página. Se você estiver procurando por instruções gerais de configuração do Stripe, consulte nossa documentação do Stripe.
Requisitos:
- WPForms 2.0 ou posterior. As proteções se aplicam a pagamentos Stripe em ambas as versões, gratuita e paga.
- Por padrão, as proteções são executadas apenas em pagamentos em modo ativo. Pagamentos em modo de teste do Stripe as ignoram, a menos que você opte por ativá-las com o filtro
wpforms_stripe_run_protections_in_test_mode.
Como as Proteções Funcionam
- Detecção de Pico de Baixo Valor: Conta as tentativas de pagamento Stripe em ou abaixo de um valor limite (padrão de US$ 3,00) em todo o site em uma 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 processando. O WPForms envia 1 e-mail ao administrador do site e exibe um aviso de administrador dispensável por período de bloqueio.
- Limite de Taxa Global: Conta as tentativas de cartão com falha (erros
CardExceptiondo Stripe) em todos os visitantes do site. Quando as falhas excedem o limite, todos os pagamentos Stripe são bloqueados até que a janela expire. Isso estende o limite de taxa por IP que vem com o WPForms desde a versão 1.8.2, e os 2 limites funcionam independentemente. - Sessões do Stripe Radar: Cria uma sessão do Radar quando um formulário Stripe é carregado e a anexa ao método de pagamento. Isso alimenta sinais comportamentais no próprio mecanismo de fraude do Stripe, tornando sua pontuação de risco mais precisa. É telemetria passiva sem limites e sem bloqueios no lado do WPForms.
Quando um pagamento é bloqueado pela detecção de pico, o cliente vê "O processamento do pagamento está temporariamente indisponível. Por favor, tente novamente mais tarde ou entre em contato com 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 removidos automaticamente quando sua duração expira.
Filtros de Detecção de Pico de Baixo Valor
| Filtro | Tipo | Padrão | Descrição |
|---|---|---|---|
wpforms_stripe_low_amount_surge_enabled | bool | verdadeiro | Ativa ou desativa a detecção de pico. |
wpforms_stripe_low_amount_threshold | float | 3.00 | Limite superior de valor. Pagamentos neste valor ou abaixo dele contam para o pico e são bloqueados enquanto um bloqueio está ativo. |
wpforms_stripe_low_amount_surge_count | int | 10 | Número de tentativas de baixo valor dentro da janela que acionam um bloqueio. |
wpforms_stripe_low_amount_surge_window | int | 120 | Duração da janela deslizante em segundos. |
wpforms_stripe_low_amount_block_duration | int | HORA_EM_SEGUNDOS | Duração do bloqueio, em segundos. |
wpforms_stripe_low_amount_surge_email_to | string | get_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 surto maior 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]';
} );
Observação: O estado de surto é armazenado nos transientes wpforms_stripe_low_amount_counter, wpforms_stripe_low_amount_block e wpforms_stripe_low_amount_notified. Se você alterar esses valores de filtro enquanto um bloqueio estiver ativo, exclua os transientes para que os novos valores entrem em vigor imediatamente.
Filtros Globais de Taxa Limite
| Filtro | Tipo | Padrão | Descrição |
|---|---|---|---|
wpforms_stripe_rate_limit_global_enabled | bool | verdadeiro | Ativa ou desativa o limite de taxa em todo o site. |
wpforms_stripe_rate_limit_global_allowed_attempts | int | 50 | Número de tentativas de cartão com falha em todo o site antes que todos os pagamentos do Stripe sejam bloqueados. |
wpforms_stripe_rate_limit_global_expires_in | int | HORA_EM_SEGUNDOS | Duração da janela de contagem e do bloqueio, em segundos. |
O limite de taxa por IP pré-existente mantém seus próprios filtros e não é afetado pelo escopo global: wpforms_stripe_rate_limit_allowed_attempts (padrão 3) e wpforms_stripe_rate_limit_expires_in (padrão de 6 horas).
Por exemplo, para aumentar o limite global em uma loja de alto tráfego:
// 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 do Stripe Radar
As sessões do Radar enviam telemetria comportamental da página de pagamento para o Stripe Radar, o motor de prevenção de fraudes do Stripe. O WPForms cria a sessão ao carregar o formulário nos fluxos do Card Element e Payment Element e a anexa ao método de pagamento que ele cria. A chamada é de melhor esforço: se a API do Radar estiver indisponível, o pagamento prossegue normalmente sem uma sessão.
| Filtro | Tipo | Padrão | Descrição |
|---|---|---|---|
wpforms_stripe_radar_session_enabled | bool | verdadeiro | Ativa ou desativa a criação de sessão do Radar. |
// Disable Radar session telemetry.
add_filter( 'wpforms_stripe_radar_session_enabled', '__return_false' );
Observação: O Stripe não anexa sessões do Radar a pagamentos concluídos através do Stripe Link. Esta é uma limitação da plataforma Stripe, não uma configuração do WPForms.
Testando as Proteções no Modo de Teste do Stripe
As proteções pulam o modo de teste do Stripe por padrão para que fluxos de trabalho normais de desenvolvimento não sejam afetados por falsos positivos. Para exercitá-las em modo de teste, opte por participar e diminua os limites 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 R$ 2 ou menos usando um cartão de teste do Stripe. A 3ª tentativa é bloqueada, o e-mail de alerta é enviado e o aviso de administrador aparece. Um pagamento acima do limite ainda é processado durante o bloqueio. Veja nosso guia para testar pagamentos do 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 você 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
Relacionado
- Como Instalar e Usar o Addon Stripe com WPForms
- Testando Pagamentos Stripe
- Um Guia Completo sobre Tipos de Campo de Pagamento no WPForms (veja a opção Preço Mínimo, a defesa recomendada que torna os testes de cartão de baixo valor não lucrativos)
- Documentação do Stripe Radar