Tópico 10 — Segurança no WordPress

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.

Objetivo implementar uma rotina de segurança simples e eficiente, cobrindo autenticação, permissão, validação e manutenção.

2. Configurações Básicas

Permissões recomendadas
# 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.

.htaccess — bloqueio de 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.

Exemplo — processamento seguro de formulário
<?php
if (isset($_POST['email'])) {
  $email = sanitize_email($_POST['email']);
  if (is_email($email)) {
    wp_mail($email, 'Confirmação', 'Seu cadastro foi recebido.');
  }
}
?>
Sanitização remove dados perigosos; validação confirma se o valor é aceitável.

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.

Gerando e verificando nonce
<!-- 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.

Exemplo de cabeçalhos no .htaccess
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"
Dica ative redirecionamento automático para HTTPS no servidor ou plugin de cache.

7. Permissões e Usuários

8. Backups e Monitoramento

Importante os backups devem ser testados periodicamente para garantir sua integridade.

9. Plugins e Temas Seguros

10. Boas Práticas Gerais

Resultado Site estável, confiável e com menor risco de invasões ou perda de dados.