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.
Índice
- Proteger .htaccess e arquivos ocultos
- Proteger o wp-config.php
- Impedir listagem de diretórios
- Bloquear execução de PHP em wp-content/uploads
- Bloquear upload de arquivos perigosos (ex: .php , .exe , .sh )
- Bloquear execução de PHP em wp-includes
- Ajustar permissões de arquivos e pastas
- (Opcional) Proteções Avançadas
- Conclusão

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 acessoaccess_log off; log_not_found off;
: Evita registros de acesso e erros para esses arquivos (mantém os logs limpos)

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

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.

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.

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.

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.

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
Tipo | Permissão |
---|---|
Pastas (/ ) | 755 |
Arquivos (*.* ) | 644 |
wp-config.php | 600 (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.

(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.
Importante: Só aplique se tem certeza de que nenhum tema ou plugin precisa executar arquivos PHP diretamente por URL.
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.
Isso só é recomendado em diretórios privados, como onde você armazena scripts internos ou recursos administrativos que não devem ser expostos ao público. Não aplique isso em pastas públicas como wp-content/themes ou plugins, senão seus estilos e scripts vão parar de funcionar!
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
ewp-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.
Deixe um comentário