Os 5 essenciais: faça-os primeiro
- Mantenha atualizados o núcleo do WordPress, os temas e os plugins. Os plugins vulneráveis são o vetor de ataque número 1. Ative as atualizações automáticas de versões menores (o WordPress 5.6+ faz isso por padrão). Para versões maiores, atualize dentro de 7 dias após o lançamento. Para plugins, ative a atualização automática dos confiáveis; revise manualmente as notas de versão dos plugins críticos.
- Use senhas fortes e únicas para cada conta do WordPress. Especialmente as de administrador. Use um gerenciador de senhas (1Password, Bitwarden). Desative o nome de usuário «admin»: crie um novo administrador e exclua o antigo.
- Ative a autenticação de dois fatores. Use o Wordfence Login Security (grátis) ou nosso Gerador de QR 2FA com qualquer app TOTP. O 2FA derrota mais de 99% dos ataques de preenchimento de credenciais.
- Instale um plugin de segurança confiável. Wordfence (a versão gratuita basta para a maioria dos sites) ou Solid Security. Não empilhe vários: eles entram em conflito. O plugin gerencia o limite de tentativas de login, o monitoramento de integridade de arquivos e a análise de malware.
- Backups diários fora do site. UpdraftPlus → Dropbox/Google Drive. Faça o backup antes de precisar dele. Teste o processo de restauração pelo menos uma vez.
As 10 seguintes: medidas adicionais de alto impacto
- Force o HTTPS. O Let's Encrypt é grátis em toda hospedagem moderna. Redirecione HTTP para HTTPS no nível do servidor.
- Mude o prefixo das tabelas do banco de dados. O WordPress usa wp_ por padrão; troque por algo personalizado durante a instalação. Não evita ataques, mas dificulta alguns padrões de ataque.
- Desative o XML-RPC se você não o usa. O XML-RPC é um vetor comum de amplificação de força bruta. Se você não usa o app móvel do Jetpack nem a publicação remota, desative-o via .htaccess ou um plugin.
- Limite as tentativas de login. O Wordfence faz isso automaticamente. Evita o preenchimento de credenciais por força bruta.
- Rotacione as chaves/salts de autenticação do WordPress. Use nosso Gerador de Salts do WordPress. Rotacione-as após qualquer suspeita de comprometimento, após excluir um administrador comprometido e a cada 6-12 meses de forma rotineira.
- Use SSH ou SFTP para transferir arquivos, nunca FTP simples. O FTP transmite as credenciais em texto puro.
- Restrinja o acesso ao wp-admin por IP se possível. Se a sua equipe usa IPs fixos (escritório, VPN), limite o wp-admin somente a esses IPs. Via .htaccess ou a configuração do Nginx.
- Desative a edição de arquivos no wp-config.php. Adicione:
define('DISALLOW_FILE_EDIT', true);Evita que os atacantes editem temas/plugins pelo painel se comprometerem uma conta. - Oculte o número de versão do WordPress. Remova a meta tag generator. Não evita ataques, mas reduz o fingerprinting.
- Bloqueie as permissões de arquivos. Arquivos 644, diretórios 755, wp-config.php 600. A maioria das hospedagens gerenciadas faz isso automaticamente; em um VPS, configure-o explicitamente.
Refinamento: bom, mas não crítico
- URL de login personalizada (p. ex., WPS Hide Login). Sobretudo reduz o ruído do tráfego de bots; não é segurança real.
- CAPTCHA nos formulários de login. Uma leve fricção para os ataques automatizados.
- Desative a execução de PHP em /uploads/. Evita que shells PHP enviados sejam executados.
- Use o WAF da Cloudflare (nível gratuito). Filtra o tráfego malicioso antes que chegue ao seu servidor.
- Configure um alerta por e-mail de administrador para as atualizações de plugins/núcleo.
- Use o pré-carregamento HSTS para forçar o HTTPS no nível do navegador.
- Desative a enumeração de usuários por meio da API REST (Solid Security ou Wordfence cuidam disso).
- Use cabeçalhos de Política de Segurança de Conteúdo (CSP).
- Desative a navegação por diretórios (a maioria das hospedagens faz isso por padrão).
- Monitore o tempo de atividade + a integridade com um serviço externo (nível gratuito do UptimeRobot + Sucuri SiteCheck semanal).
- Limite os papéis de usuário ao mínimo privilégio. A maioria dos colaboradores não precisa de acesso de nível editor.
- Criptografia de backups do banco de dados (o UpdraftPlus Premium oferece).
- Hospedagem de imagens fora do domínio por meio de CDN (reduz a superfície de ataque).
- Revisão periódica do registro de auditoria de segurança.
- Teste de penetração anual se o site gera receita significativa.
Mitos de segurança do WordPress: pule-os
Várias medidas de «segurança» muito recomendadas oferecem proteção real mínima: (1) «Ocultar a versão do WordPress»: conhecer a sua versão ajuda ligeiramente nos ataques direcionados, mas a solução real é atualizar, não ocultar. (2) «Mover o wp-config.php para cima de public_html»: traz essencialmente zero benefício de segurança; o arquivo já está protegido por .htaccess. (3) «Desativar a API REST»: quebra muitos plugins e bloqueia pouco. Limite endpoints específicos em vez disso. (4) «Empilhar vários plugins de segurança»: eles entram em conflito e se sobrepõem. Um plugin confiável (Wordfence ou Solid Security) cobre o que três fariam. (5) «Renomear o wp-login.php»: segurança por obscuridade; os atacantes encontram a nova URL facilmente por meio de redirecionamentos.
Se você foi hackeado: lista de recuperação
- Não entre em pânico; não exclua coisas de imediato. Tire primeiro um instantâneo do estado atual para a análise forense.
- Coloque o site fora do ar (plugin de modo manutenção ou redirecionamento .htaccess para uma página estática).
- Mude todas as senhas de administrador e rotacione os salts do WordPress.
- Audite as contas de usuário: exclua de imediato as contas de administrador não reconhecidas.
- Analise em busca de malware com o Wordfence Premium ou Sucuri.
- Compare os arquivos atuais com um download limpo do WordPress: o diff revela os arquivos do núcleo modificados.
- Revise a tabela wp_options do banco de dados em busca de entradas inesperadas (muitas vezes contém JS injetado).
- Restaure a partir do backup limpo mais recente (é por isso que os backups diários importam).
- Uma vez restaurado, audite cada plugin: remova os não usados, atualize todos e substitua qualquer um com CVEs públicas.
- Atualize o núcleo do WordPress para a versão mais recente.
- Reative o site e fique atento à reinfecção por 30 dias.