Aqui estão alguns códigos personalizados que você pode adicionar ao arquivo functions.php do seu tema WordPress para aumentar a segurança do seu site sem o uso de plugins:
// Arquivo: wp-seguranca-basica.php
// Plugin ou functions.php
// Impede edição de arquivos no admin
if ( ! defined( 'DISALLOW_FILE_EDIT' ) ) {
define( 'DISALLOW_FILE_EDIT', true );
}
// Aplica todos os headers de segurança e restrições adicionais
function ivon_filho_aplicar_seguranca_completa() {
// Headers de segurança
header('Strict-Transport-Security: max-age=31536000; includeSubDomains; preload');
header('X-Frame-Options: SAMEORIGIN');
header('X-Content-Type-Options: nosniff');
header('Referrer-Policy: strict-origin-when-cross-origin');
header('Permissions-Policy: camera=(), microphone=(), geolocation=(), fullscreen=(self)');
header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; frame-ancestors 'self'; base-uri 'self'; form-action 'self'");
// Protege acesso direto ao wp-config.php
if ( ! empty( $_SERVER['SCRIPT_FILENAME'] ) && basename( $_SERVER['SCRIPT_FILENAME'] ) === 'wp-config.php' ) {
exit('Acesso negado.');
}
// Protege contra enumeração de usuários via ?author=
if ( isset($_SERVER['REQUEST_URI']) && preg_match('/\?author=\d+/i', $_SERVER['REQUEST_URI']) ) {
wp_redirect(home_url(), 301);
exit;
}
}
add_action('send_headers', 'ivon_filho_aplicar_seguranca_completa');
// Remove a versão do WordPress do código-fonte e feeds
add_filter('the_generator', '__return_empty_string');
// Desativa XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
// Remove erros detalhados na tela de login
add_filter('login_errors', function() {
return 'Credenciais incorretas. Por favor, tente novamente.';
});
// Remove rotas REST /users
add_filter('rest_endpoints', function($endpoints) {
unset($endpoints['/wp/v2/users']);
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
return $endpoints;
});