1. Conceito Geral
A segurança no WordPress depende de boas práticas em várias camadas: servidor, instalação, banco de dados e aplicação. Mesmo sendo uma plataforma madura, vulnerabilidades ocorrem quando configurações básicas são ignoradas.
2. Configurações Básicas
- Mantenha o WordPress, plugins e temas sempre atualizados.
- Use credenciais fortes (senhas com letras, números e símbolos).
- Evite o usuário “admin” — crie um nome de usuário personalizado.
- Desative a exibição de erros em produção (
WP_DEBUG_DISPLAY). - Configure permissões adequadas para arquivos e pastas.
# Pastas: leitura e execução
find /var/www/html -type d -exec chmod 755 {} \;
# Arquivos: leitura
find /var/www/html -type f -exec chmod 644 {} \;
3. Protegendo o wp-config.php
O arquivo wp-config.php contém credenciais sensíveis. É essencial restringir seu acesso.
<files wp-config.php>
order allow,deny
deny from all
</files>
Também é possível mover o arquivo uma pasta acima da raiz pública do site.
4. Validação e Sanitização de Dados
Ao manipular dados vindos de formulários ou parâmetros de URL, sempre valide e sanitize antes de salvar ou exibir.
<?php
if (isset($_POST['email'])) {
$email = sanitize_email($_POST['email']);
if (is_email($email)) {
wp_mail($email, 'Confirmação', 'Seu cadastro foi recebido.');
}
}
?>
5. Nonces e Autenticação
Nonces (“números usados uma vez”) previnem ataques de Cross-Site Request Forgery (CSRF). Devem ser incluídos em formulários e verificados no processamento.
<!-- formulário seguro -->
<form method="post">
<?php wp_nonce_field('form_milha','nonce_milha'); ?>
<input type="text" name="nome">
<button type="submit">Enviar</button>
</form>
<?php
if (isset($_POST['nonce_milha']) && wp_verify_nonce($_POST['nonce_milha'], 'form_milha')) {
echo 'Formulário válido';
} else {
echo 'Ação não permitida';
}
?>
6. HTTPS e Cabeçalhos Seguros
Certifique-se de que o site usa HTTPS. Adicione cabeçalhos de segurança no servidor ou via plugin.
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
7. Permissões e Usuários
- Conceda a cada usuário apenas o acesso necessário.
- Revise contas antigas e remova acessos não utilizados.
- Habilite autenticação em dois fatores quando possível.
- Evite compartilhamento de contas administrativas.
8. Backups e Monitoramento
- Automatize backups diários do banco de dados e semanais dos arquivos.
- Guarde cópias fora do servidor principal (Google Drive, S3, etc.).
- Use logs para monitorar acessos e alterações.
- Plugins úteis: UpdraftPlus, All-in-One WP Migration, WP Activity Log.
9. Plugins e Temas Seguros
- Instale plugins apenas do repositório oficial ou fontes confiáveis.
- Remova plugins e temas desativados para reduzir superfície de ataque.
- Evite plugins que inserem iframes ou scripts externos sem controle.
- Leia avaliações e verifique a data da última atualização antes de instalar.
10. Boas Práticas Gerais
- Habilite bloqueio de IP após tentativas falhas (ex: plugin Limit Login Attempts).
- Use prefixo de tabelas personalizado no banco (
$table_prefix). - Desative edição de arquivos pelo painel (
DISALLOW_FILE_EDIT). - Limite o acesso ao painel via IP quando possível.
- Monitore vulnerabilidades conhecidas em plugins.