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.phppode 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
.htaccesscontra execução de PHP, a listagem de arquivos pode continuar exposta se essa regra não for aplicada. - Ideal combinar com arquivos
index.phpvazios 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.phpvazio 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.phpvazio 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
uploadsewp-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