

Resumo rápido
Nesta seção você verá comandos para proteger arquivos e pastas importantes do WordPress: wp-config.php, .htaccess, wp-includes e uploads. As alterações podem ser feitas pelo gerenciador de arquivos do painel de hospedagem (cPanel, hPanel), por SFTP ou por SSH. Faça backup antes de alterar qualquer arquivo.
Os exemplos de .htaccess valem para servidores Apache 2.4 e LiteSpeed. Em Nginx, as regras equivalentes ficam na configuração do servidor.
O wp-config.php guarda o nome do banco de dados, usuário, senha, prefixo das tabelas e as chaves de segurança. Ele merece a maior proteção do site.
Impede que alguém com acesso ao painel altere o código de temas e plugins pelo editor embutido:
No wp-config.php, antes da linha “That’s all, stop editing!”:
define( 'DISALLOW_FILE_EDIT', true );Mais restritivo: bloqueia também instalar e atualizar plugins, temas e o núcleo pelo painel. Use só se as atualizações forem feitas por outro meio (por exemplo, WP-CLI ou deploy).
define( 'DISALLOW_FILE_MODS', true );No .htaccess da raiz do site (Apache 2.4):
<Files wp-config.php>
Require all denied
</Files>Via SSH, na pasta do site:
chmod 640 wp-config.php # ou 600, se o PHP rodar com o mesmo usuário do dono do arquivoO .htaccess configura o comportamento do servidor web para a pasta: redirecionamentos, regras de acesso e reescrita de URLs. Bloqueie a leitura dele e de outros arquivos ocultos:
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>A pasta /wp-includes contém funções internas do WordPress que não precisam ser acessadas diretamente pelo navegador. Adicione as regras abaixo no .htaccess, fora do bloco # BEGIN WordPress / # END WordPress (que é reescrito automaticamente):
# Bloquear arquivos internos do WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>Em instalações multisite, a linha RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] bloqueia o ms-files.php e deve ser removida.
Fonte: WordPress – Hardening WordPress.
A pasta wp-content/uploads deve conter apenas mídia e documentos, nunca código executável. Crie um .htaccess dentro de wp-content/uploads para impedir a execução de PHP, inclusive arquivos disfarçados como foto.php.jpg:
# wp-content/uploads/.htaccess
<FilesMatch "\.(php|php\d|phtml|phar|pht)(\.|$)">
Require all denied
</FilesMatch>Essa abordagem é melhor do que liberar só imagens, porque não quebra PDFs, planilhas e outros arquivos legítimos da biblioteca de mídia.
Por padrão, o WordPress funciona com as permissões abaixo. Permissões mais abertas (como 777) permitem que qualquer processo do servidor altere os arquivos.

Aplicando as permissões em massa:
# na pasta do site (via SSH)
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 640 wp-config.phpSe a hospedagem oferece SSH com WP-CLI, estes comandos ajudam a manter o site íntegro:
wp core verify-checksums # compara os arquivos do núcleo com os oficiais
wp plugin verify-checksums --all # o mesmo para plugins do diretório oficial
wp core update && wp plugin update --all && wp theme update --all
wp user list --role=administrator # confira quem é administradorFonte: WP-CLI – Commands, WordPress – Hardening WordPress.
Bloqueie o acesso pela web no .htaccess (Require all denied), restrinja as permissões para 640 ou 600 e use DISALLOW_FILE_EDIT para impedir a edição de código pelo painel.
DISALLOW_FILE_EDIT só desativa o editor de temas e plugins no painel. DISALLOW_FILE_MODS também bloqueia instalar e atualizar plugins, temas e o núcleo pelo painel.
Order, Allow e Deny são da sintaxe do Apache 2.2. No Apache 2.4 a forma nativa é Require; a antiga só funciona se o módulo de compatibilidade estiver ativo.
Crie um .htaccess dentro de wp-content/uploads com uma regra FilesMatch que negue extensões PHP (php, phtml, phar), inclusive nomes duplos como arquivo.php.jpg.
Arquivos com 644, pastas com 755 e o wp-config.php com 640 ou 600. Nunca use 777.