Registro de alterações do Captcha
Versão: 1.5.0 - Lançada em 2026-05-22
- Novo: Limitador de taxa com bloqueio rígido — conta cada GET e POST em superfícies protegidas por captcha (wp-login / register / lost-password / comments, WooCommerce my-account / checkout / pay-for-order, finalização de compra do Ultimate Multisite / inline-login) e responde com HTTP 429, um header
Retry-Aftere uma espera tarpit aleatória (1–5s, limitada rigidamente a 15s). - Novo: definições
cap_rate_limit_tarpit_min/cap_rate_limit_tarpit_maxpara ajustar a janela do tarpit. - Novo: filtro
wu_cap_rate_limit_whitelist_ippara isentar intervalos de IP confiáveis. - Novo: ação
wu_cap_rate_limit_will_blockque dispara imediatamente antes de a resposta de bloqueio rígido ser enviada. - Novo: Deteção de IP de cliente resistente a falsificação.
Captcha_Core::get_client_ip()(a fonte da verdade para chaves de buckets de limite de taxa,remoteipde siteverify de captcha e hashes de IP de estatísticas) agora aplica um modelo de confiança estrito: REMOTE_ADDR é a base,CF-Connecting-IPé respeitado apenas quando o par imediato está dentro de um intervalo de IP atual da Cloudflare, eX-Forwarded-Foré respeitado apenas quando o par imediato está na lista de proxies confiáveis configurada pelo administrador, com uma varredura da direita para a esquerda que ignora saltos confiáveis/CF antes de se fixar no IP do visitante. - Novo: definição
cap_trust_cloudflare_headers(predefinição OFF) — opte por confiar emCF-Connecting-IPquando estiver atrás da Cloudflare. O plugin inclui um instantâneo de CIDR da Cloudflare e atualiza-o semanalmente via wp-cron, com fallback incluído se a atualização falhar. - Novo: definição
cap_trusted_proxies— área de texto de CIDRs ou IPs simples (um por linha, comentários#permitidos) que lista os seus próprios proxies de linha da frente / balanceadores de carga. Sem isto,X-Forwarded-Foré ignorado mesmo quando o limitador de taxa está ativado. - Novo: Deteção automática, na primeira ativação, de provável postura Cloudflare / proxy com um aviso de administrador "Aplicar definições detetadas" com um clique. O plugin nunca substitui os seus valores guardados; se tráfego subsequente sugerir que a sua configuração já não corresponde à realidade (por exemplo, a Cloudflare alterou intervalos CIDR e o CIDR do seu proxy está agora desatualizado), um aviso de incompatibilidade não descartável apresenta a atualização recomendada.
- Corrigido: O modo invisível já não rebaixa silenciosamente
cap_security_levelpara FAST — o nível configurado pelo administrador é respeitado. Um novo filtrowu_cap_server_security_levelestá disponível para sites que queiram lógica personalizada. - Corrigido: O contador de estatísticas
rate_limits_triggeredagora incrementa em cada bloqueio, não apenas no raro caminho de proteção após sucesso. - Corrigido:
Captcha_Core::get_client_ip()é agora a única fonte da verdade para atribuição de IP de visitante em todo o limitador de taxa, fornecedores de captcha (reCAPTCHA + hCaptchasiteverify) e estatísticas — fechando um vetor de falsificação em que pedidos diretos ao servidor de origem com um headerCF-Connecting-IPforjado teriam sido agrupados pelo IP falsificado em vez do par real. - Corrigido: A barreira de limite de taxa da finalização de compra clássica do WooCommerce agora dispara em
template_redirect(prioridade 1) em vez dewoocommerce_before_checkout_form. O hook ao nível do formulário nunca dispara quando o carrinho está vazio, por isso o tráfego de inundação que nunca adiciona um produto contornava totalmente o limitador. - Corrigido: A barreira de limite de taxa de pagamento de encomenda do WooCommerce agora dispara em
template_redirectem vez dewoocommerce_before_pay_action. Este último só dispara depois dewp_verify_nonce('woocommerce-pay')ter êxito, o que significa que atacantes não autenticados (o modelo de ameaça real) nunca acionavam o limitador. - Corrigido: A barreira de limite de taxa da finalização de compra da WooCommerce Store API (blocos) agora dispara em
rest_pre_dispatchem vez dewoocommerce_store_api_checkout_update_order_from_request. Este último só dispara depois de a Store API validar o carrinho e os campos de faturação, por isso bots não autenticados recebiam um 400 do validador e nunca acionavam o limitador. - Corrigido: A barreira de limite de taxa do inline-login do Ultimate Multisite agora dispara em
wu_ajax_nopriv_wu_inline_loginprioridade 1 (e o espelho para utilizadores autenticados) em vez dewu_before_inline_login. Este último só dispara depois decheck_ajax_referer('wu_checkout')ter êxito, por isso bots não autenticados sem um nonce wu_checkout válido recebiam um 403 e nunca acionavam o limitador. - Corrigido:
Rate_Limiter::enforce()agora aplica uma proteção uma vez por pedido, indexada porsurface|ip, para que hooks a montante que disparam duas vezes por renderização (notavelmentewu_setup_checkoutno Ultimate Multisite) já não reduzam para metade o limiar efetivo do limite de taxa. - Corrigido: As barreiras de superfície de limite de taxa já não consultam
Captcha_Core::is_whitelisted()(filtrowu_captcha_whitelisted). Esse filtro sinaliza "captcha já tratado por outra superfície" e é ortogonal à proteção contra inundação — a integração do WooCommerce estava a usá-lo para ignorar o captcha de início de sessão do WordPress quando um nonce Woo estava presente, o que contaminava a contagem de taxa e permitia que POSTs Woo evitassem o limitador. O filtro específico de limite de taxawu_cap_rate_limit_whitelist_ipé a única exceção que agora se aplica.
Versão: 1.3.2 - Lançada em 2026-01-27
- Corrigido: Widget Cap não renderizava em formulários de finalização de compra que usam Elementor ou outros construtores de páginas
- Corrigido: Elemento personalizado cap-widget era removido pela sanitização wp_kses()
- Melhorado: Usar conteúdo chamável para o campo de captcha da finalização de compra para contornar a filtragem de HTML
- Melhorado: JavaScript simplificado com fallback para casos extremos
Versão: 1.3.1 - Lançada em 2026-01-26
- Corrigido: Modo invisível do Cap Captcha não resolvia automaticamente em formulários dinâmicos de finalização de compra do Ultimate Multisite
- Melhorado: Script de finalização de compra do Cap agora usa MutationObserver para detetar widgets carregados dinamicamente
- Melhorado: Adicionada interceção do botão de finalização de compra para aguardar pelo token antes do envio
Version: 1.3.0 - Lançado em 2026-01-27
- Novo: integração do checkout WooCommerce Blocks com interceção de fetch da Store API
- Novo: suporte a captcha invisível para checkout WooCommerce (hCaptcha invisível, reCAPTCHA v2 invisível, v3)
- Novo: página de definições autónoma para utilização sem Ultimate Multisite
- Novo: Jetpack Autoloader para prevenção de conflitos de dependências
- Corrigido: hCaptcha não renderizava no checkout dinâmico do Ultimate Multisite (conteúdo carregado por AJAX)
- Corrigido: Captcha não era atualizado/reposto quando ocorriam erros de validação do formulário
- Corrigido: hCaptcha não aparecia na página de checkout WooCommerce
- Corrigido: erro de classe reCAPTCHA não encontrada (adicionada a biblioteca PHP google/recaptcha)
- Melhorado: deteção de erros via hooks WordPress, MutationObserver e interceção AJAX
- Melhorado: as descrições das definições agora incluem URLs do dashboard para chaves de API
Version: 1.2.2 - Lançado em 2026-01-24
- Corrigido: Captcha não era apresentado no Ultimate Multisite Login Form Element (incompatibilidade no nome do filtro do formulário)
- Corrigido: HTML do widget Cap era removido pela sanitização wp_kses()
- Corrigido: seletores JavaScript não encontravam formulários com barras nos IDs de elementos
- Adicionado: hook de filtro
wu_kses_allowed_htmlpara classaddons expandirem as tags HTML permitidas - Removido: ficheiros JavaScript de código morto substituídos por scripts específicos por fornecedor
Version: 1.2.1 - Lançado em 2026-01-23
- Corrigido: validação do token Cap Captcha falhava em ambientes multisite (agora usa transients em toda a rede)
- Corrigido: Captcha agora é renderizado de forma consistente para todos os utilizadores, independentemente do estado de login
- Corrigido: incompatibilidade entre a renderização e a validação do captcha que causava falhas no checkout
Version: 1.2.0 - Lançado em 2026-01-21
- Novo: Cap Captcha - captcha proof-of-work autoalojado, ativado por predefinição na ativação
- Novo: proteção sem configuração - ative o addon e fica protegido imediatamente
- Novo: arquitetura polimórfica de fornecedor de captcha para extensibilidade fácil
- Novo: proteção do checkout WooCommerce Store API contra ataques de teste de cartões
- Novo: dashboard de acompanhamento de estatísticas que mostra desafios, verificações e ataques bloqueados
- Novo: predefinições de nível de segurança (Rápido, Médio, Máximo) para dificuldade do Cap Captcha
- Novo: classes base abstratas para fornecedores reCAPTCHA e hCaptcha
- Melhorado: base de código refatorizada em classes de fornecedores modulares
- Melhorado: melhor separação de responsabilidades com classe de gestor dedicada
- Fixed: Security improvements for $_SERVER variable sanitization
- Corrigido: configuração de testes PHPUnit para convenções de nomes WordPress
Version: 1.0.1 - Lançado em 2025-09-28
- Renomear prefixo para ultimate-multisite; atualizar domínio de texto; incremento de versão.