Desativar listagens de diretório com 404 em vez de 403

9

Desativei as listagens de diretórios assim ...

Options -Indexes

Quando tento acessar um diretório como este: -

www.example.com/secret/

Eu recebo uma resposta 403 Proibida .

No entanto, eu quero uma resposta 404 Não encontrada , para que os hackers não possam adivinhar minha estrutura de diretórios tão facilmente. Como eu faria isso?

Rik Heywood
fonte
Sei disso, mas não faz sentido facilitar para ninguém, principalmente porque é preciso muito pouco esforço para dificultar as coisas.
Rik Heywood

Respostas:

8

Ative mod_rewrite e AllowOverride em / secret. Em seguida, crie .htaccess:

RewriteEngine On
RewriteBase   /secret
RewriteRule   ^$ - [R=404,L]
ooshro
fonte
1

Crie um script 403 personalizado que retorne um erro 404.

Por exemplo, no PHP:

<?php
header("HTTP/1.0 404 Not Found");
die("<h1>404 Not Found</h1>");
?>

Agora configure o Apache para usar este script para obter resultados 403:

ErrorDocument 403 /403.php

Sem mexer com reescritas e funciona instantaneamente para todo o servidor.

Gerald Schneider
fonte
Isso ainda não será exibido como 403 para pessoas que raspam o servidor?
IRGeekSauce
1
Não. O servidor responderá com um erro 404 correto devido ao header()comando.
Gerald Schneider
-1, porque sua mensagem de erro personalizada pode ser! = Sua mensagem de erro do servidor (seja o nging, o apache ou o que for). Esta é a última solução se não houver maneira de configurar seu servidor ou usar arquivos .htaccess. Além disso, esta solução não impedirá que você DirBustering seu site, porque você ainda pode distinguir essas "mensagens de erro personalizadas" das mensagens de erro do servidor.
Awaaaaarghhh 18/03
0

Minha solução para parar de exibir o conteúdo do diretório como lista e exibir o erro 404 é simples. Crie o arquivo .htaccess no diretório raiz do seu projeto e escreva quais diretórios devem ser protegidos.

Estrutura de diretórios

- your_root_directory
  - .htaccess
  - 404.html
  - index.html 
  - app
    - other files I do not want to show
  - models
    - other files I do not want to show

.htaccess

RewriteEngine On
RewriteRule   ^app/ - [R=404,L]
RewriteRule   ^models/ - [R=404,L]

ErrorDocument 404 /your_root_directory/404.html

A segunda linha do .htaccess não permite o acesso a itens de lista no diretório de aplicativos e em todos os seus sub-diretórios.

A terceira linha do .htaccess não permite o acesso a itens de lista no diretório de modelos e todos os seus sub-diretórios.

A quarta linha .htaccess define nosso próprio erro 404 (se você não deseja mostrar o erro padrão do apache).

Lembre-se de limpar o cache do seu navegador ao trabalhar com o htaccess.

Sem nome
fonte