WP Custom Security
Plugin Wordpress com medidas de segurança personalizadas.
by Ricardo Moro · github.com/ifrs/wp-custom-security · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/ifrs/wp-custom-security/archive/refs/heads/main.zipPlugin de segurança personalizado para WordPress implementado como Must-Use Plugin (MU-Plugin).
O que é um Must-Use Plugin?
Must-Use Plugins são plugins especiais do WordPress que:
- São carregados automaticamente pelo WordPress
- Não podem ser desativados através do painel administrativo
- Não aparecem na lista de plugins regulares
- São executados antes dos plugins convencionais
- Ideais para funcionalidades críticas de segurança
Instalação
-
Copie o arquivo
wp-custom-security.phppara a pasta:wp-content/mu-plugins/wp-custom-security.php -
Se a pasta
mu-pluginsnão existir, crie-a dentro dewp-content/ -
O plugin será ativado automaticamente (não requer ativação manual)
-
Para verificar se está ativo, acesse: Painel Admin → Plugins → Must-Use
Desinstalação
Para desativar o plugin, simplesmente remova o arquivo da pasta mu-plugins.
Medidas de Segurança Implementadas
🔒 Proteção de Informações
- Ocultar versão do WordPress: Remove informações de versão do header e meta tags
- Remover headers do servidor: Oculta
X-Powered-ByeServerheaders - Remover informações desnecessárias: Remove RSD link, WLW manifest, shortlink, REST API discovery e oEmbed links do head
- Query strings seguras: Remove
?ver=e adiciona timestamp de arquivo (?v=timestamp) para manter cache funcionando
🛡️ Headers de Segurança HTTP
- X-Frame-Options: Previne clickjacking
- X-Content-Type-Options: Previne MIME sniffing
- X-XSS-Protection: Proteção contra XSS
- Referrer-Policy: Controla informações de referrer
- Permissions-Policy: Controla acesso a APIs sensíveis (geolocalização, microfone, câmera)
- HSTS (Strict-Transport-Security): Força HTTPS quando disponível
- Content-Security-Policy: Policy básica de frame-ancestors
👤 Proteção contra Enumeração de Usuários
- Bloqueia acesso a
/?author=Xpara usuários não logados - Mensagens de erro genéricas no login
- Restringe endpoints de usuários na REST API (
/wp/v2/users) apenas para usuários autenticados
🚫 Desabilitação de Recursos Desnecessários
- XML-RPC completamente desabilitado: Previne ataques DDoS e brute force
- Pingbacks/Trackbacks desabilitados: Remove vetor de ataque DDoS
- Application Passwords desabilitados: Remove funcionalidade de senhas de aplicativo (WP 5.6+)
- jQuery Migrate removido: Reduz superfície de ataque (apenas no frontend)
- Scripts de emoji removidos: Remove código desnecessário
⚡ Rate Limiting
- Limite de 100 requisições por minuto na REST API para usuários não autenticados
- Proteção contra abuso de API
🍯 Proteção Adicional de Login
- Honeypot field: Campo invisível no formulário de login que detecta e bloqueia bots automaticamente
- Não afeta usuários legítimos
📝 Logging de Segurança
- Registra tentativas de login falhadas com timestamp, username e IP
- Registra detecções de bot via honeypot
- Logs salvos no error_log padrão do PHP
Compatibilidade
- WordPress: 5.6 ou superior
- PHP: 7.4 ou superior
- Compatível com: Multisite (Network: true)
- Não interfere com: Temas, plugins regulares, cache do navegador
Características Técnicas
- Implementado usando padrão Singleton
- Usa hooks e filtros nativos do WordPress
- Não quebra funcionalidades do WordPress
- Performance otimizada: Usa transients nativos do WP para cache
- Seguro por padrão: Todas as medidas são não-intrusivas
Licença
Esse código é distribuído sob a licença GNU GPL 3.0.