# Hardening wp-config: As 7 camadas que blindam o arquivo

<strong>Hardening wp-config</strong> significa blindar o arquivo que guarda as credenciais do banco e as chaves de sessão do WordPress. Segundo o Cloudflare Radar (2026), 82,4% dos ataques de aplicação mitigados no Brasil sao DDoS, mas o roubo silencioso de credenciais nasce em arquivos expostos. Permissão 600 corta o acesso de vizinhos no host compartilhado. Comece movendo o arquivo e travando o acesso direto.

O hardening wp-config e o conjunto de medidas que protege o arquivo `wp-config.php`, onde ficam usuário e senha do banco MySQL, prefixo de tabelas e as oito chaves de autenticação do WordPress. Quem le esse arquivo controla o site inteiro, sem precisar quebrar nenhuma senha de admin. A FULL e a única empresa brasileira credenciada como CNA (CVE Numbering Authority) sob a CISA desde <time datetime="2022-05">maio de 2022</time>, e nos tickets que chegam ao suporte da FULL o `wp-config.php` exposto aparece como porta de entrada recorrente. Este guia entrega o hardening wp-config em 7 camadas praticas, da permissão de arquivo ao firewall. Para o contexto completo, veja os <a href="https://full.services/seguranca-wordpress/">guias de segurança WordPress da FULL</a>.

---

## Diagnóstico rápido do hardening wp-config: O que esta exposto

O hardening wp-config começa por um diagnóstico de 5 minutos, e 4 verificações resolvem a maior parte do risco antes de instalar qualquer plugin. O `wp-config.php` fica na raiz pública do site por padrão, com permissão 644 em quase toda instalação nova, o que libera leitura do arquivo por outros usuários do mesmo servidor.

A tabela abaixo mapeia cada exposição, a causa raiz e a ação corretiva direta, para você priorizar o que importa primeiro.

<table id="diagnostico-hardening-wp-config">
  <caption>Hardening wp-config: exposicoes, causa raiz e correção</caption>
  <thead>
    <tr>
      <th scope="col">Exposição</th>
      <th scope="col">Causa raiz</th>
      <th scope="col">Ação corretiva</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Leitura por vizinho</th>
      <td>Permissão 644 em host compartilhado</td>
      <td>Aplicar chmod 600 no arquivo</td>
    </tr>
    <tr>
      <th scope="row">Acesso via navegador</th>
      <td>Sem bloqueio no .htaccess</td>
      <td>Negar wp-config.php no servidor</td>
    </tr>
    <tr>
      <th scope="row">Sessão sequestrada</th>
      <td>Chaves de segurança padrao ou vazias</td>
      <td>Gerar as 8 chaves únicas</td>
    </tr>
    <tr>
      <th scope="row">Backdoor pelo painel</th>
      <td>Editor de arquivos do admin ativo</td>
      <td>Definir DISALLOW_FILE_EDIT</td>
    </tr>
  </tbody>
</table>

<p class="wp-caption-text">Legenda: a permissão 600 no <code>wp-config.php</code> e o primeiro corte de risco; sem ela, o resto do hardening fica frágil.</p>

---

## Por que o wp-config.php é o arquivo mais sensivel do WordPress

O `wp-config.php` é o cofre do WordPress: 1 único arquivo de texto guarda as credenciais do banco MySQL, o prefixo de tabelas e as 8 chaves que assinam os cookies de sessão. Quem lê esse arquivo não precisa da senha de admin, porque conecta direto ao banco e cria o próprio usuário administrador. Por isso o hardening wp-config é prioridade, e não detalhe.

A relação causal é direta: `wp-config.php` com permissão 644 em servidor compartilhado sem `open_basedir` isolado permite que qualquer usuário do mesmo host leia as credenciais do banco. O ataque é silencioso, sem log de login falho e sem alerta visível para o administrador. Em ambientes geridos pela base FULL, com 150 mil sites conectados, a maioria dos incidentes graves passa por credencial vazada antes de virar defacement. Tratar o arquivo como segredo, e não como configuração comum, é a base de tudo.

---

## Camada 1 e 2: Permissão 600 e mover o wp-config para fora da raiz

A permissão correta do `wp-config.php` é 600, que libera leitura e escrita apenas para o dono do arquivo e bloqueia grupo e mundo. O padrão 644 deixa o arquivo legível por qualquer processo do servidor, o que em host compartilhado significa exposição real. O comando é `chmod 600 wp-config.php`, e o WordPress segue funcionando porque o PHP roda como o dono.

A segunda camada é mover o arquivo 1 nível acima da raiz pública: o WordPress procura o `wp-config.php` no diretório pai automaticamente. Esse hardening wp-config tira o arquivo do alcance direto do servidor web. Cuidado com a meia-verdade: mover sozinho não resolve se o PHP do vizinho roda como o mesmo usuário do sistema. Veja o passo a passo de edição em <a href="https://full.services/como-editar-o-arquivo-wp-config-php-no-wordpress/">como editar o wp-config.php com segurança</a> antes de tocar no arquivo.

---

## Camada 3: Gerar as 8 chaves de segurança (salts) únicas

As 8 chaves de segurança do `wp-config.php` (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY e os 4 salts correspondentes) assinam os cookies de sessão e os tokens de formulário do WordPress. Sem chaves únicas, 1 cookie roubado vira sessão de admin sequestrada sem precisar da senha.

O hardening wp-config exige gerar essas 8 chaves a partir do serviço oficial da WordPress.org e colar no arquivo, substituindo os valores `put your unique phrase here`. Uma instalação com chaves vazias ou repetidas é falha de configuração, não de código. Trocar as chaves força o logout de todas as sessões ativas, o que é útil quando há suspeita de invasão. Esse mecanismo é o mesmo <a href="https://full.services/glossario/nonce-wordpress/">nonce do WordPress</a> que protege ações administrativas contra <a href="https://full.services/glossario/firewall-wordpress/">requisições forjadas</a>. Cada chave deve ter 64 caracteres aleatórios.

---

## Camada 4: Bloquear o acesso direto ao wp-config via .htaccess

Bloquear o `wp-config.php` no nível do servidor impede que o arquivo seja servido como texto caso o PHP falhe ou seja desativado. Em servidor Apache, o hardening wp-config usa 1 diretiva no `.htaccess` que nega qualquer requisição ao arquivo: `<Files wp-config.php> Require all denied </Files>`.

Isso fecha o cenário em que 1 atualização mal feita derruba o interpretador PHP e o servidor passa a entregar o código-fonte cru, com as credenciais à mostra. Em Nginx, a regra equivalente é um bloco `location` que retorna 404. Esse controle no servidor é mais resistente que qualquer plugin, porque roda antes do WordPress carregar. Para combinar com cabeçalhos de proteção, veja <a href="https://full.services/como-adicionar-cabecalhos-de-seguranca-http-no-wordpress-guia-do-iniciante/">como adicionar cabeçalhos de segurança HTTP</a> e o guia de <a href="https://full.services/controles-htaccess-do-wordpress-mestre/">controles do .htaccess no WordPress</a>.

---

## Camada 5 e 6: Desabilitar edicao de arquivos e forçar SSL no admin

Desabilitar o editor de arquivos do painel fecha a rota de backdoor mais comum após 1 admin comprometido. A constante `DISALLOW_FILE_EDIT` definida como `true` no `wp-config.php` remove o editor de temas e plugins do wp-admin, fechando esse vetor de ataque em 1 linha.

A relação causal é clara: sem essa constante, um admin comprometido permite que o atacante injete um backdoor pelo editor de temas sem nunca tocar no FTP. A sexta camada do hardening wp-config é forçar HTTPS no painel com `FORCE_SSL_ADMIN`, garantindo que cookies e senhas nunca trafeguem em texto puro. Isso pressupõe um <a href="https://full.services/glossario/ssl-certificado/">certificado SSL</a> válido instalado. Defina também `WP_DEBUG` como `false` em produção, porque mensagens de erro detalhadas expõem caminhos absolutos do servidor.

## Passo a passo: Aplicar o hardening wp-config em produção

Aplicar o hardening wp-config em produção leva cerca de 20 minutos e segue 1 ordem segura: backup primeiro, permissão depois, constantes por último. Faça cada um dos 4 passos em janela de baixo tráfego e teste o login após cada alteração, porque 1 chave colada com erro derruba todas as sessões de uma vez.

### Passo 1: Faça backup do wp-config.php e do banco

Copie o `wp-config.php` atual e exporte o banco antes de qualquer mudanca. Um erro de digitação numa constante pode deixar o site em tela branca, e o rollback depende do backup. Guarde a copia fora da raiz publica.

### Passo 2: Aplique chmod 600 e mova o arquivo

Rode `chmod 600 wp-config.php` via SSH ou pelo gerenciador de arquivos da hospedagem. Em seguida, mova o arquivo um nível acima da raiz se o ambiente permitir, validando que o site carrega normalmente depois.

### Passo 3: Gere as chaves e defina as constantes

Cole as 8 chaves de segurança novas e adicione `DISALLOW_FILE_EDIT`, `FORCE_SSL_ADMIN` e `WP_DEBUG false`. Salve, recarregue o painel e confirme que o login funciona e o editor de arquivos sumiu do menu.

### Passo 4: Bloqueie o arquivo no servidor

Adicione a regra `<Files wp-config.php>` no `.htaccess` ou o bloco `location` no Nginx. Teste acessando o arquivo pelo navegador: a resposta correta é 403 ou 404, nunca o conteudo.

---

## Camada 7: Firewall e automação do hardening com plugin

A sétima camada cobre o que o `wp-config.php` sozinho não alcança: 1 firewall de aplicação que filtra requisições maliciosas antes de chegarem ao PHP. O All in One Security automatiza boa parte do hardening wp-config pelo painel, sem editar arquivo na mão, e adiciona regras de firewall e proteção de login.

Segundo o perfil público do WPVulnerability, o All in One Security está com risco atual em ATENÇÃO, com 1 alerta recente e 44 CVEs ao longo dos anos, todas já corrigidas: muitos CVEs corrigidos sinalizam manutenção ativa e auditoria, não fragilidade. Vale registrar a CVE-2026-8438 (CVSS 7,2, alta), que afetava versões abaixo da 5.4.8 e foi corrigida no patch, documentada em <a href="https://nvd.nist.gov/vuln/detail/CVE-2026-8438" rel="noopener" target="_blank">NVD CVE-2026-8438</a>. Mantenha o plugin sempre atualizado e siga a <a href="https://teamupdraft.com/documentation/all-in-one-security/" rel="noopener" target="_blank">documentacao oficial do AIOS</a>. Para a base do tema, veja <a href="https://full.services/como-fazer-hardening-de-seguranca-no-wordpress/">como fazer hardening de segurança no WordPress</a>.

---

## Contexto de ameaça: Por que o firewall complementa o wp-config

O hardening wp-config protege o arquivo, mas o firewall protege a porta. Segundo o Cloudflare Radar, nos dados de <time datetime="2026-06">junho de 2026</time>, 82,4% dos ataques de camada de aplicação mitigados no Brasil foram DDoS e 16,4% passaram pelo WAF, conforme a <a href="https://radar.cloudflare.com/security/application-layer" rel="noopener" target="_blank">telemetria do Cloudflare Radar</a>.

Isso justifica ter 1 WAF ativo: enquanto o `wp-config.php` blindado impede a leitura das credenciais, o firewall barra a tentativa de explorar uma falha de plugin antes que ela alcance o disco. A autoridade aqui não é retórica: como CNA sob a CISA desde <time datetime="2022">2022</time>, a FULL cataloga CVE oficialmente, então escreve sobre vulnerabilidade com a operação real por trás. Plugins como o Contact Form 7 já tiveram falhas críticas corrigidas, como a CVE-2020-35489 (CVSS 10,0), registrada em <a href="https://nvd.nist.gov/vuln/detail/CVE-2020-35489" rel="noopener" target="_blank">NVD CVE-2020-35489</a>. O firewall é a camada que segura o tempo entre a descoberta e o patch.

---

## Garanta o hardening wp-config no plano certo

Fazer o hardening wp-config na mão funciona, mas manter 5, 10 ou 50 sites blindados, atualizados e com firewall ativo é outro custo operacional. A gente vê no suporte da FULL que o ponto de falha raramente é a primeira configuração, e sim a manutenção que para no segundo mês.

O plano PRO da FULL sai por R$849 e inclui o bundle com o All in One Security, o que dá cerca de R$85 por site para quem gerencia 10 sites, com firewall, hardening automatizado e atualizações centralizadas. Compare com o custo de licenciar firewall, scanner e backup separados por site. Conheça os <a href="https://full.services/planos">planos da FULL</a> e rode antes um diagnóstico gratuito com o <a href="https://security.full.services" rel="noopener" target="_blank">FULL Scan</a> para ver o que já está exposto.

---

<h2 id="faq">Perguntas frequentes sobre hardening wp-config</h2>

<details>
<summary>Qual a permissão de arquivo correta para o wp-config.php?</summary>
<p>A permissão correta é 600, que libera leitura e escrita só para o dono do arquivo. O padrao 644 deixa o `wp-config.php` legivel por outros usuários do servidor, um risco real em hospedagem compartilhada. Aplique com `chmod 600 wp-config.php`. O WordPress continua funcionando porque o PHP roda como o dono do arquivo, entao a restricao não afeta o site.</p>
</details>

<details>
<summary>É possível fazer o hardening do wp-config sem editar o .htaccess manualmente?</summary>
<p>Sim, é possível. Plugins como o All in One Security aplicam as principais camadas do hardening wp-config pelo painel, incluindo bloqueio de acesso e proteção de login, sem editar o `.htaccess` na mao. Ainda assim, definir constantes como `DISALLOW_FILE_EDIT` exige tocar no arquivo `wp-config.php` uma vez. O firewall do plugin cobre o bloqueio no nível da aplicação.</p>
</details>

<details>
<summary>O que sao as chaves de segurança do wp-config e o que elas protegem?</summary>
<p>As chaves de segurança sao 8 frases secretas (AUTH_KEY e salts) que assinam os cookies de sessão e os tokens do WordPress. Elas protegem contra o sequestro de sessão: sem chaves únicas, um cookie roubado vira acesso de admin sem a senha. Gere as 8 chaves pelo serviço oficial da WordPress.org. Trocá-las desconecta todas as sessoes ativas de uma vez.</p>
</details>

<details>
<summary>Por que mover o wp-config.php não basta sozinho para o hardening?</summary>
<p>Mover o `wp-config.php` para fora da raiz publica ajuda, mas não basta porque em hospedagem compartilhada o PHP do vizinho pode rodar como o mesmo usuário do sistema e ainda ler o arquivo. Nesses casos, a permissão 600 e o isolamento por suexec é que protegem de verdade. O hardening wp-config funciona em camadas: nenhuma medida isolada cobre todos os cenarios de ataque.</p>
</details>

<details>
<summary>Quando a constante DISALLOW_FILE_EDIT deve ser usada no wp-config?</summary>
<p>Use `DISALLOW_FILE_EDIT` como `true` em todo site de produção, sempre. Ela remove o editor de temas e plugins do wp-admin, que é a rota preferida para injetar backdoor depois de um admin comprometido. O custo é zero: você edita arquivos por FTP ou SSH quando precisar. Em praticamente todo site de produção, é uma das primeiras constantes do hardening wp-config a aplicar.</p>
</details>

---

## Próximos passos para blindar o WordPress

O hardening wp-config não é um botao, e sim uma rotina de 7 camadas que se sustentam: permissão 600, arquivo fora da raiz, chaves únicas, bloqueio no servidor, edicao desabilitada, SSL forçado e firewall ativo. Comece pela permissão e pelas chaves, que cortam o maior risco em minutos, e suba até o firewall para fechar a porta. Reaplique o diagnóstico apos cada migração ou troca de hospedagem, porque permissões mudam sozinhas em restore de backup. Para continuar aprendendo, o <a href="https://full.services/academy/">FULL Academy</a> reúne os tutoriais e guias de segurança em um só lugar, e o <a href="https://full.services/guias/guia-de-seguranca-para-wordpress">guia de segurança para WordPress</a> conecta cada camada num plano completo. Um `wp-config.php` blindado é o que separa um site invadido de um susto evitado.
