Como corrigir o wp-config.php exposto no WordPress
O que é o wp-config.php exposto?
O wp-config.php guarda os dados mais sensíveis da instalação: usuário e senha do banco de dados, o prefixo das tabelas e as chaves e sais de autenticação (SECRET KEYS) que protegem os cookies de login. Em condições normais o PHP executa o arquivo e nada do conteúdo chega ao navegador. Ele fica exposto quando o servidor para de interpretar PHP e serve o arquivo como texto, quando existe uma cópia de backup acessível (como wp-config.php.bak) ou quando um diretório aberto lista o arquivo. Qualquer um desses casos entrega ao atacante o acesso ao banco e a possibilidade de forjar sessões.
Como identificar
- Acessar seudominio.com/wp-config.php no navegador mostra o conteúdo do arquivo em texto, com as linhas DB_PASSWORD e as chaves visíveis.
- Um scanner de segurança reporta “wp-config.php is publicly accessible” ou “sensitive file exposure”.
- Existe um arquivo como wp-config.php.bak, wp-config.txt ou wp-config.php~ acessível por URL direta.
- Após uma queda do PHP, páginas .php passam a ser baixadas ou exibidas como texto em vez de executadas.
Como prevenir
- Mantenha a regra de negar o wp-config.php no .htaccess ou no Nginx em todos os sites
- Nunca deixe cópias de backup do arquivo na raiz acessível; guarde backups fora do diretório público
- Defina a permissão do wp-config.php em 640 ou 600 e desative a listagem de diretório no servidor
Causa
- Servidor servindo arquivos .php como texto após uma falha do handler do PHP ou do PHP-FPM.
- Cópia de backup do arquivo (wp-config.php.bak, .old, .txt) deixada na raiz e acessível por URL.
- Listagem de diretório ativada na raiz do site, expondo a presença e o nome do arquivo de configuração.
- Ausência de regra no .htaccess ou no Nginx negando o acesso direto ao wp-config.php.
- Permissão do arquivo larga demais (como 777 ou 666), permitindo leitura por outros usuários do servidor compartilhado.
Como resolver
- Confirme a exposição e troque as credenciais: se o conteúdo do wp-config.php apareceu na web, considere as credenciais vazadas. Troque a senha do banco de dados e gere novas chaves de autenticação assim que possível, porque elas já podem ter sido lidas.
- Bloqueie o arquivo no Apache (.htaccess): no Apache, negue o acesso direto ao wp-config.php pelo .htaccess da raiz, usando o bloco de código abaixo. Isso impede que o arquivo seja servido por URL, mesmo se o PHP cair.
- No Nginx, negue pela configuração do site: adicione um bloco location para wp-config.php retornando 403 e peça ao host para recarregar a configuração do servidor.
- Remova backups e ajuste a permissão: apague qualquer cópia do arquivo (wp-config.php.bak, .old, .txt) da raiz e defina a permissão do wp-config.php para 640 (ou 600). Desative também a listagem de diretório no servidor.
- Valide o bloqueio: acesse seudominio.com/wp-config.php de novo no navegador. Protegido corretamente, deve retornar 403 Forbidden, sem mostrar nenhuma linha do conteúdo.
# .htaccess da raiz - nega acesso direto ao wp-config.php (Apache 2.4)
<Files wp-config.php>
Require all denied
</Files>
# Bloqueia tambem copias de backup comuns do arquivo:
<FilesMatch "^wp-config.php.(bak|old|txt|save|orig|swp)$">
Require all denied
</FilesMatch>














