Spam de comentários em WordPress não é apenas uma nuisance — tem impacto real em performance, SEO e reputação dos sites dos seus clientes. Comentários de spam consomem recursos do servidor, podem introduzir links maliciosos e sinalizam ao Google que o site tem conteúdo de baixa qualidade. Este guia cobre a estratégia completa de proteção, da configuração básica às técnicas avançadas.
Porque o spam de comentários é um problema técnico sério
Além do óbvio (comentários indesejados), o spam de comentários tem consequências técnicas:
- Performance: cada comentário spam submetido gera carga no servidor — PHP, base de dados, potencialmente email. Sites com centenas de tentativas diárias de spam sentem o impacto.
- SEO: comentários aprovados acidentalmente com links para sites maliciosos funcionam como outbound links para bad neighborhoods. O Google penaliza sites que linkam para conteúdo spam.
- Base de dados: a tabela
wp_commentspode crescer para dezenas de milhares de entradas com spam em moderação, aumentando o tamanho da base de dados e abrandando queries. - Segurança: alguns ataques usam o formulário de comentários como vetor — injeção de código via campos de comentário, ou uso dos comentários como canal de exfiltração.
Avaliar se os comentários são necessários
A primeira decisão — e muitas vezes a mais correta — é desativar comentários completamente. Para a maioria dos sites institucionais, portfolios e lojas WooCommerce, os comentários de blog não trazem valor. Se o cliente não lê nem responde aos comentários, não faz sentido tê-los ativos.
Desativar comentários globalmente
Em Settings → Discussion, desative "Allow people to submit comments on new posts". Para posts existentes, use WP-CLI:
wp post list --post_type=post --format=ids | xargs -I {} wp post update {} --comment_status=closed
Ou via SQL (mais rápido para grandes volumes):
UPDATE wp_posts SET comment_status = 'closed' WHERE post_type = 'post';
Desativar para posts antigos automaticamente
Settings → Discussion: ative "Automatically close comments on posts older than X days". Posts com mais de 30-60 dias raramente recebem comentários legítimos — mas são alvo preferido de spam bots que procuram páginas menos monitorizadas.
Akismet: a camada base obrigatória
Se os comentários estão ativos, o Akismet é a base incontornável. O serviço analisa cada comentário contra uma base de dados global de spam e classifica-o automaticamente. Graças ao volume de dados que processa, a taxa de deteção é elevada.
Configuração correcta do Akismet:
- Obtenha uma API key em akismet.com (gratuita para uso pessoal, pago para uso comercial — verifique os termos)
- Instale e ative o plugin Akismet Anti-Spam
- Configure a API key em Settings → Akismet Anti-Spam
- Ative "Silently discard the worst and most pervasive spam" para reduzir a carga na base de dados
Importante para agências: o Akismet gratuito não é licenciado para uso em sites comerciais. Para clientes com negócios, use um plano Akismet pago ou avalie alternativas (Antispam Bee, WPBruiser).
Antispam Bee: alternativa gratuita e compatível com GDPR
O Antispam Bee é uma alternativa popular ao Akismet, especialmente para contexto europeu onde a privacidade é crítica. Não envia dados para servidores externos — processa tudo localmente. Funcionalidades principais:
- Deteção de spam por país (bloquear comentários de países sem audiência do cliente)
- Verificação de spam via base de dados local
- Bloquear comentários em posts muito antigos
- Deteção de links em comentários de utilizadores novos
- BBCode spam detection
Para sites de clientes portugueses sem audiência internacional, configurar o Antispam Bee para bloquear comentários de fora de Portugal e Espanha elimina a maioria do spam automaticamente.
reCAPTCHA e proteções no formulário
Google reCAPTCHA v3
O reCAPTCHA v3 avalia comportamento do utilizador sem mostrar desafios visuais. Integrar com o formulário de comentários WordPress requer um plugin (ex: WP reCaptcha Integration) ou código personalizado. É eficaz mas adiciona dependência de Google — considere o impacto em GDPR.
Honeypot fields
Um campo oculto no formulário (via CSS display:none) que utilizadores legítimos nunca preenchem, mas bots automatizados preenchem. Se o campo tem valor, o comentário é spam. É simples, não tem dependências externas e não afeta a experiência do utilizador:
// Adicionar ao functions.php ou plugin personalizado
add_action('comment_form', function() {
echo '<input type="text" name="comment_trap" style="display:none" tabindex="-1" autocomplete="off">';
});
add_filter('preprocess_comment', function($comment) {
if (!empty($_POST['comment_trap'])) {
wp_die('Spam detetado.');
}
return $comment;
});
Moderação e configurações de Discussion
Independentemente das ferramentas anti-spam, configure corretamente as definições de Discussion em Settings → Discussion:
- "Comment must be manually approved": ative sempre. Nunca permita aprovação automática de comentários de utilizadores sem comentários aprovados anteriores.
- "Hold a comment in the queue if it contains X or more links": defina para 1 ou 2 links. A maioria do spam de SEO contém múltiplos links.
- Comment Blacklist: adicione palavras frequentes em spam (casino, viagra, SEO services, backlinks, etc.). Comentários com estas palavras vão automaticamente para spam.
- Require name and email: ative para aumentar a fricção para bots simples.
Limpar spam acumulado na base de dados
Sites que não tinham proteção adequada podem ter milhares de comentários spam acumulados. Limpar via WP-CLI:
# Ver quantos comentários spam existem
wp comment list --status=spam --format=count
# Apagar todos os comentários marcados como spam
wp comment delete $(wp comment list --status=spam --format=ids) --force
# Limpar comentários em moderação antigos (mais de 30 dias)
wp comment list --status=hold --format=ids | xargs wp comment delete --force
Após limpeza, optimize a tabela:
wp db optimize
Bloquear spam ao nível do servidor (antes do PHP)
A abordagem mais eficiente: bloquear pedidos ao wp-comments-post.php que não provêm de uma sessão legítima no site. Em Apache (.htaccess):
# Bloquear submissão direta de comentários (sem referer do próprio site)
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} /wp-comments-post\.php
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?seusite\.pt [NC]
RewriteRule . - [F,L]
</IfModule>
Esta regra bloqueia bots que submetem comentários diretamente sem primeiro carregar a página. Elimina grande parte do spam automatizado sem afetar utilizadores legítimos (que chegam ao formulário a partir do próprio site).
Integrar na checklist de segurança de novos projetos
Proteção anti-spam deve ser parte da configuração inicial de qualquer site WordPress, não uma correção reativa. Inclua na sua checklist técnica de novo projeto:
- Avaliar se comentários são necessários (e desativar se não for o caso)
- Se ativos: instalar Akismet ou Antispam Bee, configurar moderação obrigatória
- Configurar honeypot ou reCAPTCHA
- Adicionar regra de .htaccess para bloquear submissão direta
- Desativar comentários em posts com mais de 60 dias
Para proteção mais ampla do site, veja o guia de hardening de segurança WordPress e como configurar uma WAF em WordPress.
Quer que configuremos proteção completa nos sites dos seus clientes?
O nosso serviço de manutenção WordPress inclui configuração de segurança, proteção anti-spam e monitorização contínua.
Falar connosco