Desabilite a listagem de diretório no WordPress

Considere desabilitar a listagem de diretório no WordPress por maior privacidade e segurança. Entenda e aprenda como fazer.

Seus amigos merecem saber desse conteúdo?

Desabilitar a listagem de diretório no WordPress é uma boa prática para evitar expor informações sensíveis, características do servidor em uso e possíveis vulnerabilidades em plugins, temas ou em arquivos de uma forma geral. Essa prática contribue para uma maior segurança para WordPress.

O servidor Apache, por padrão, exibe uma página de índice dos conteúdos, arquivos e subdiretórios, quando não localiza um arquivo index.html ou index.php, por exemplo. Você deve evitar esse comportamento padrão de listagem de diretório para evitar que naveguem pelos seus arquivos de mídia, arquivos de plugins e temas.

Exemplo de listagem de diretório de um plugin WordPress
Exemplo de listagem de diretório de um plugin WordPress

O problema de segurança com a listagem de diretório

Observe a imagem acima e as informações expostas com a listagem de diretório. São diversas informações que norteiam um atacante: o path dos seus arquivos revelando a estrutura de pastas do servidor. É possível navegar e visualizar os arquivos e pastas, e se você faz uma prática que deve ser evitada de nomear arquivos como arquivo.php.bkp, por exemplo, esse conteúdo poderá ser lido; a versão do servidor web, Apache/2.2.22, da linguagem, PHP 5.4.4 e alguns módulos em uso.

Essas informações do servidor são expostas em caso da diretiva ServerSignature estiver habilitada.

Como desabilitar a listagem de diretório

A listagem de diretório pode ser evitada através do arquivo de configuração do Apache, do arquivo .htaccess ou simplesmente da existência de um arquivo index.html ou index.php, por exemplo, no diretório e subdiretórios.

É importante compreender essa cascata de configuração e assim optar pelo caminho mais seguro para desabilitar a listagem no WordPress. Simplificando, temos o seguinte cenário:

  1. Arquivo de configuração, httpd.conf / apache2.conf, do Apache;
  2. Arquivo .htaccess;
  3. Index.html / index.php.

Desabilitando a listagem de diretório através do arquivo de configuração do Apache

O arquivo geralmente é nomeado como httpd.conf ou apache2.conf e nele você poderá considerar a seguinte diretiva para evitar a listagem dos diretórios:

<Directory /var/www/html>
 Options -Indexes
</Directory>

Desabilitando a listagem de diretório através do arquivo .htaccess

Considere o uso da diretiva abaixo no arquivo .htaccess da sua instalação WordPress. Esse arquivo se localiza na pasta raiz, e se você usa FTP/SFTP é preciso considerar a exibição dos arquivos ocultos.

# Desabilitar listagem de diretórios
Options -Indexes

Desabilitando a listagem de diretório através de arquivos de índices

Esses arquivos são os famosos Silence is Golden. Na falta de um arquivo de índice em seus diretórios de temas e plugins, considere incluir um arquivo index.php, por exemplo, para evitar a listagem.

O arquivo não precisa ter nenhum conteúdo, é requerido somente sua existência. Mas é comum incluirmos apenas um comentário ficando algo assim:

<?php
// Silence is Golden

Qual a melhor estratégia para desativar a listagem de diretório

Minha sugestão é fazer uso das três alternativas e ter o conceito de cascata em mente, mas nesse contexto pense de forma reversa devido alguns contextos que explicarei em detalhes.

Se você é desenvolver de plugin ou tema, considere sempre incluir um arquivo index.php em todos os diretórios. Provavelmente você não será o responsável pela configuração e manutenção do WordPress, logo você não poderá garantir o uso do arquivo .htaccess para evitar a listagem de diretório, o que dirá do servidor para alterar o arquivo de configuração do servidor web.

Se você é um gestor de sites em WordPress não terá um domínio por completo de todos os arquivos dos temas e plugins em uso para garantir que eles fizeram uso do arquivo de índice nos diretórios, portando considere usar o arquivo .htaccess e se possível configurar o servidor para evitar a listagem de diretório.

Se você é um SysAdmin considere configurar o Apache para evitar a listagem de diretório, assim você garante que na falta da diretiva no arquivo .htaccess ou da falta dos arquivos de índice a listagem de diretório não aconteça.

Opa! Não conseguimos encontrar o seu formulário.