Início » Guias » Como proteger arquivos e pastas do WordPress

Como proteger arquivos e pastas do WordPress, um Guia de Segurança

Proteger arquivos e pastas do WordPress Ă© uma necessidade comum entre quem quer manter seu site seguro e estĂĄvel. Ao seguir este passo a passo, vocĂȘ aprenderĂĄ de forma clara e objetiva como impedir acessos indesejados, evitar execução de scripts maliciosos e reforçar a segurança da estrutura de arquivos do seu WordPress, tudo com boas prĂĄticas recomendadas pela comunidade, e sem depender de plugins.

Ícone azul com um documento protegido por um escudo com cadeado, representando segurança e restrição de acesso a arquivos e pastas.

Proteger .htaccess e arquivos ocultos

Semelhantemente, impede o acesso via navegador a arquivos ocultos do servidor que começam com um ponto (.), como .htaccess, .htpasswd, .git, .env, entre outros.

Esses arquivos frequentemente contĂȘm configuraçÔes sensĂ­veis, senhas, ou informaçÔes internas do servidor. Por consequĂȘncia, se acessĂ­veis via URL (ex: https://site.com/.htaccess), podem expor falhas crĂ­ticas de segurança.

BenefĂ­cios de proteger arquivos e pastas do WordPress

  • Impede leitura de arquivos de configuração crĂ­tica
  • Evita exposição de senhas (.htpasswd) e tokens (.env)
  • Protege estruturas internas do repositĂłrio (.git)

CĂłdigo para Apache (.htaccess)

Adicione este trecho ao arquivo .htaccess da raiz do WordPress:

<FilesMatch "^\.">
    Require all denied
</FilesMatch>

Explicação do código:

  • <FilesMatch "^\.">: Aplica a regra a todos os arquivos cujo nome começa com .
  • Require all denied: Bloqueia o acesso totalmente (funciona no Apache 2.4+)

Alternativa para Apache 2.2 (mais antiga): Se o servidor usar Apache < 2.4, substitua por:

<FilesMatch "^\.">
    Order allow,deny
    Deny from all
</FilesMatch>

CĂłdigo para NGINX

Esses arquivos sĂŁo comuns em servidores e contĂȘm dados sensĂ­veis. Mesmo que o NGINX nĂŁo use .htaccess, alguns plugins ou ferramentas podem gerar esses arquivos, e servidores mal configurados podem deixĂĄ-los expostos via navegador.

Coloque este bloco dentro do server {} correspondente ao seu site:

location ~ /\. {
    deny all;
    access_log off;
    log_not_found off;
}

Explicação do código:

  • location ~ /\.: Aplica a qualquer arquivo ou pasta que comece com ponto (.)
  • deny all: Bloqueia o acesso
  • access_log off; log_not_found off;: Evita registros de acesso e erros para esses arquivos (mantĂ©m os logs limpos)
Ícone azul com engrenagem e escudo com cadeado, simbolizando a proteção de configuraçÔes crĂ­ticas do sistema, como o arquivo wp-config.php no WordPress.

Proteger o wp-config.php

Bloqueia o acesso ao arquivo wp-config.php via navegador. Esse arquivo é o mais sensível do WordPress, pois contém:

  • As credenciais do banco de dados (DB_NAME, DB_USER, DB_PASSWORD)
  • As chaves e salts de autenticação
  • DefiniçÔes avançadas de segurança, debug, paths, etc.

Geralmente qualquer acesso indevido a esse arquivo pode comprometer completamente o site. Por isso, bloquear o acesso direto por HTTP é uma das medidas mais importantes de hardening (segurança avançada).

BenefĂ­cios

  • Impede o roubo de credenciais e chaves de segurança, por exemplo;
  • Inclusive, protege configuraçÔes personalizadas crĂ­ticas;
  • Igualmente garante que o arquivo sĂł possa ser acessado via servidor (PHP) e nunca por navegador.

CĂłdigo para Apache (.htaccess)

Adicione no .htaccess da raiz do WordPress:

<Files wp-config.php>
    Order allow,deny
    Deny from all
</Files>

Além disso, é compatível com Apache 2.2 e versÔes modernas.

CĂłdigo para NGINX

Adicione dentro do bloco server {} do seu nginx.conf ou site:

location = /wp-config.php {
    deny all;
    access_log off;
    log_not_found off;
}

ObservaçÔes

  • O wp-config.php pode estar um nĂ­vel acima da raiz do WordPress por segurança adicional. Se for o caso, o acesso direto por HTTP jĂĄ estarĂĄ bloqueado.
  • Com efeito, para reforçar a proteção do sistema de arquivos do WordPress, combine essa configuração com permissĂ”es de arquivo adequadas:
chmod 600 wp-config.php
Ícone azul com um disco rígido e cadeado, representando a restrição de acesso e a proteção contra listagem de diretórios no servidor.

Impedir listagem de diretĂłrios

Evita que usuĂĄrios vejam o conteĂșdo de pastas no navegador quando nĂŁo existe um index.php ou index.html nelas.

Por padrĂŁo, se o servidor estiver mal configurado e uma pasta (como /wp-content/uploads/2025/) estiver acessĂ­vel sem um arquivo index, o navegador pode exibir uma lista completa de arquivos, incluindo imagens, backups ou arquivos sensĂ­veis.

BenefĂ­cios de blindar diretĂłrios e arquivos sensĂ­veis no WordPress

  • Oculta estrutura de diretĂłrios e nomes de arquivos
  • Impede que visitantes (ou bots) explorem arquivos diretamente
  • Reduz exposição a ataques como scraping e engenharia reversa

CĂłdigo para Apache (.htaccess)

Adicione no .htaccess da raiz do WordPress (ou de qualquer pasta):

Options -Indexes

Isso instrui o Apache a negar a listagem automĂĄtica de conteĂșdo de diretĂłrios com o intuito de proteger arquivos e pastas do WordPress.

CĂłdigo para NGINX

Adicione dentro do bloco server {}:

autoindex off;

VocĂȘ pode aplicar isso globalmente ou apenas em diretĂłrios especĂ­ficos, como:

location /wp-content/uploads/ {
    autoindex off;
}

ObservaçÔes

  • Essa proteção Ă© leve, rĂĄpida e essencial para qualquer site WordPress pĂșblico.
  • Mesmo se um diretĂłrio estiver protegido por .htaccess contra execução de PHP, a listagem de arquivos pode continuar exposta se essa regra nĂŁo for aplicada.
  • Ideal combinar com arquivos index.php vazios em diretĂłrios crĂ­ticos para proteger arquivos e pastas do WordPress com melhores resultados.
Ícone azul de uma figura em um laptop com expressão maliciosa, representando um invasor tentando executar código malicioso no servidor.

Bloquear execução de PHP em wp-content/uploads

Impede que arquivos .php enviados para a pasta uploads sejam executados. Essa pasta é usada por padrão para armazenar imagens, vídeos, PDFs e arquivos de mídia, de acordo com a documentação de hardening do WP não deveriam existir scripts PHP lå.

Do mesmo modo, atacantes que conseguem enviar arquivos maliciosos (via formulĂĄrios vulnerĂĄveis, uploads nĂŁo validados ou plugins mal projetados) costumam tentar colocar scripts PHP em /uploads/ para ganhar controle do site.

Essa proteção anula esse vetor de ataque, mesmo que o arquivo seja enviado com sucesso. Em outras palavras:

BenefĂ­cios

  • Bloqueia execução de shells PHP ocultos
  • Protege contra malware que usa uploads como porta de entrada
  • Essencial em ambientes com ĂĄrea de envio de arquivos (contato, portfĂłlio, etc.)

CĂłdigo para Apache (.htaccess)

Crie (ou edite) o arquivo .htaccess em wp-content/uploads/.htaccess:

<FilesMatch "\.php$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

Com o intuito de proteger sua instalação WP, esse código bloqueia a execução de qualquer arquivo .php diretamente acessado via navegador.

CĂłdigo para NGINX

Adicione no bloco server {} ou em uma location para uploads:

location ~* ^/wp-content/uploads/.*\.php$ {
    deny all;
}

ObservaçÔes sobre como para proteger arquivos e pastas do WordPress

  • Essa medida Ă© considerada obrigatĂłria em qualquer polĂ­tica de hardening capaz de blindar diretĂłrios e arquivos sensĂ­veis no WordPress.
  • VocĂȘ pode complementar adicionando um arquivo index.php vazio em /uploads/ para evitar listagem de diretĂłrios tambĂ©m.
  • Combine com a etapa “Bloquear upload de arquivos perigosos” para reforçar a segurança e proteção do sistema de arquivos do WordPress.
Ícone azul com dois arquivos e um triñngulo de alerta, representando o bloqueio de arquivos perigosos enviados ao servidor.

Bloquear upload de arquivos perigosos (ex: .php, .exe, .sh)

Impede que tipos de arquivos potencialmente perigosos sejam acessados mesmo que tenham sido enviados com sucesso para pastas como wp-content/uploads.

Embora o WordPress e alguns plugins limitem tipos de arquivos por padrão, ataques bem-sucedidos ou falhas de validação podem permitir o envio de scripts como:

  • .php (cĂłdigo executĂĄvel)
  • .exe (executĂĄveis Windows)
  • .sh, .py, .pl, .cgi (scripts de shell ou linguagens interpretadas)

Este bloqueio restringe o acesso a esses arquivos, prevenindo a execução remota e acesso direto.

Benefícios de garantir a segurança da estrutura de arquivos do WordPress

  • Reduz a superfĂ­cie de ataque via upload;
  • De maneira idĂȘntica, previne execução e acesso direto a arquivos maliciosos;
  • Acima de tudo, complementa a proteção de execução PHP em uploads.

CĂłdigo para Apache (.htaccess)

Crie ou edite o arquivo wp-content/uploads/.htaccess:

<FilesMatch "\.(php|php5|php7|exe|sh|py|pl|cgi)$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

Este bloqueio nĂŁo impede o upload em si, mas torna esses arquivos inacessĂ­veis via navegador, em razĂŁo disso quebrando a cadeia de ataque.

CĂłdigo para NGINX

Adicione no nginx.conf ou no bloco do site:

location ~* \.(php|php5|php7|exe|sh|py|pl|cgi)$ {
    deny all;
}

Ou, se quiser restringir apenas dentro de /uploads/:

location ~* ^/wp-content/uploads/.*\.(php|php5|php7|exe|sh|py|pl|cgi)$ {
    deny all;
}

ObservaçÔes

  • Com o propĂłsito de impedir o upload na origem, use validação no servidor PHP ou plugins com filtro de tipo MIME.
  • Essa regra Ă© defensiva e age depois do upload para neutralizar o arquivo.
  • Combine com a etapa Bloquear execução de PHP em uploads para mĂĄxima eficĂĄcia.
Ícone azul de um monitor com um olho e um símbolo de bloqueio, representando a restrição de acesso e execução de arquivos internos sensíveis.

Bloquear execução de PHP em wp-includes

Impede que arquivos .php dentro da pasta wp-includes sejam executados diretamente por requisiçÔes via navegador.

A pasta wp-includes/ Ă© usada pelo WordPress, antes de mais nada, para armazenar seus arquivos internos e funçÔes essenciais. Dessa forma, os arquivos PHP nessa pasta devem ser carregados apenas internamente pelo nĂșcleo do WordPress, e nunca acessados diretamente pelo usuĂĄrio via URL.

Bloquear esse acesso direto mitiga ataques que tentam explorar vulnerabilidades em arquivos do nĂșcleo por meio de requisiçÔes maliciosas.

BenefĂ­cios de proteger arquivos e pastas do WordPress

  • Protege contra exploração direta de arquivos internos do WordPress
  • Impede execução remota de scripts legĂ­timos fora do fluxo esperado
  • Reduz a superfĂ­cie de ataque baseada no core

CĂłdigo para Apache (.htaccess)

Crie ou edite o arquivo wp-includes/.htaccess:

<FilesMatch "\.php$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

Isso bloqueia qualquer tentativa de acessar diretamente arquivos .php dentro de wp-includes via navegador, com o intuito de blindar diretĂłrios e arquivos sensĂ­veis no WordPress e proteger os arquivos e pastas do WordPress.

CĂłdigo para NGINX

Adicione no bloco do site (server {}):

location ~* ^/wp-includes/.*\.php$ {
    deny all;
}

ObservaçÔes

  • Essa regra nĂŁo interfere no funcionamento do WordPress, jĂĄ que o sistema carrega esses arquivos internamente.
  • Pode ser estendida para bloquear outros tipos de arquivos, se necessĂĄrio.
  • Recomenda-se adicionar um index.php vazio tambĂ©m, para impedir listagem da pasta se o servidor estiver mal configurado.
Ícone azul com um escudo de segurança central e vĂĄrias pessoas conectadas ao redor de uma mesa, representando o controle de permissĂ”es e acesso seguro a arquivos e pastas.

Ajustar permissÔes de arquivos e pastas

Corrige as permissÔes do sistema de arquivos para garantir que o WordPress funcione corretamente sem expor arquivos a riscos desnecessårios.

PermissÔes excessivas (como 777 ou 775) são um dos vetores mais comuns de ataque, pois permitem que usuårios não autorizados modifiquem ou executem arquivos.

Esta etapa define as permissÔes ideais para arquivos, pastas e arquivos críticos como wp-config.php e arquivos do sistema, por exemplo.

Benefícios de reforçar a proteção do sistema de arquivos do WordPress

  • Impede que scripts maliciosos alterem arquivos do WordPress
  • Protege arquivos de configuração de leitura nĂŁo autorizada
  • Reduz o risco de escalonamento de privilĂ©gios e injeçÔes via FTP ou shell

PermissÔes recomendadas

TipoPermissĂŁo
Pastas (/)755
Arquivos (*.*)644
wp-config.php600 (ou 640 em hospedagens compartilhadas)

Comando para ajustar permissÔes (Linux/Apache)

# Navegue até a raiz do WordPress
cd /caminho/para/seu/site

# Corrige permissÔes de pastas para 755
find . -type d -exec chmod 755 {} \;

# Corrige permissÔes de arquivos para 644
find . -type f -exec chmod 644 {} \;

# wp-config.php com permissĂŁo mais restrita
chmod 600 wp-config.php

Para ambientes com mĂșltiplos usuĂĄrios (como hospedagens compartilhadas)

chmod 640 wp-config.php

O grupo precisa ser configurado corretamente (ex: www-data) para evitar problemas de leitura. Verifique se o grupo de arquivos estĂĄ correto com ls -l wp-config.php

Se o NGINX estiver rodando como www-data, o grupo do arquivo também precisa ser www-data para que ele consiga ler com permissão 640.

ObservaçÔes

  • Nunca use 777 (totalmente aberto) em nenhum arquivo ou pasta. ⚠
  • Refaça esse processo sempre que fizer upload manual de arquivos por FTP/SFTP.
  • Combine com um script de verificação recorrente (cron) se quiser manter essas permissĂ”es sempre corretas.
Ícone vermelho com trĂȘs pessoas sob um escudo com cadeado, representando segurança avançada em ambientes colaborativos ou com mĂșltiplos usuĂĄrios.

(Opcional) ProteçÔes Avançadas

Essas medidas oferecem proteção extra em ambientes muito controlados, onde o site tem plugins e temas estĂĄticos ou onde vocĂȘ quer evitar acesso direto e indevido a recursos front-end para reforçar a proteção do sistema de arquivos do WordPress.

Bloquear execução de PHP em plugins e themes

Evita que scripts PHP sejam executados diretamente nessas pastas. Útil para proteger contra plugins ou temas maliciosos ou desatualizados que contenham arquivos expostos.

Apache (.htaccess) — um em cada pasta:

<FilesMatch "\.php$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

NGINX

location ~* ^/wp-content/(plugins|themes)/.*\.php$ {
    deny all;
}

Bloquear execução direta de .js e .css para proteger arquivos e pastas do WordPress (uso interno e controlado)

Impede que arquivos JavaScript ou CSS sejam acessados diretamente pelo navegador.

Apache (.htaccess)

<FilesMatch "\.(js|css)$">
    Header set Content-Disposition attachment
</FilesMatch>

NGINX

location ~* \.(js|css)$ {
    add_header Content-Disposition attachment;
}

ConclusĂŁo

Este checklist cobre as principais açÔes para bloquear e proteger arquivos e pastas do WordPress, oferecendo um guia pråtico para reforçar a segurança da estrutura de arquivos do seu site.

Por meio de etapas bem definidas, vocĂȘ aprendeu como blindar diretĂłrios sensĂ­veis, corrigir permissĂ”es crĂ­ticas, impedir a execução indevida de scripts em ĂĄreas vulnerĂĄveis (como uploads/) e proteger arquivos essenciais como .htaccess e wp-config.php.

Finalmente, as orientaçÔes aqui apresentadas foram elaboradas para funcionar em servidores Apache e NGINX, com foco em boas prĂĄticas de hardening que aumentam a resiliĂȘncia do WordPress contra ameaças comuns, tudo sem depender de plugins externos.

  • Impedir acessos diretos a arquivos crĂ­ticos (wp-config.php, .htaccess)
  • Proteger pastas vulnerĂĄveis como uploads e wp-includes
  • Corrigir permissĂ”es de arquivos e diretĂłrios
  • Adicionar bloqueios estratĂ©gicos para execução indesejada de scripts

Essas medidas ajudam a prevenir ataques comuns como upload de shells, injeção de cĂłdigo e exploração de arquivos do nĂșcleo, e sĂŁo compatĂ­veis tanto com Apache quanto com NGINX.

Ao aplicar essas regras, vocĂȘ reforça significativamente a segurança da sua instalação WordPress sem depender de plugins, mantendo o controle total do seu servidor.

ComentĂĄrios

Deixe um comentĂĄrio

O seu endereço de e-mail não serå publicado. Campos obrigatórios são marcados com *