Wyłącza katalogi z 404 zamiast 403

9

Wyłączyłem takie katalogi ...

Options -Indexes

Kiedy próbuję uzyskać dostęp do takiego katalogu: -

www.example.com/secret/

Otrzymuję 403 zabronioną odpowiedź.

Chcę jednak odpowiedzi 404 , więc hakerzy nie mogą tak łatwo odgadnąć mojej struktury katalogów. Jak mam to zrobić?

Rik Heywood
źródło
Zdaję sobie z tego sprawę, ale nie ma sensu dla nikogo ułatwiać, zwłaszcza, że ​​tak trudny wysiłek jest trudniejszy.
Rik Heywood

Odpowiedzi:

8

Włącz mod_rewrite i AllowOverride w / secret. Następnie utwórz .htaccess:

RewriteEngine On
RewriteBase   /secret
RewriteRule   ^$ - [R=404,L]
ooshro
źródło
1

Utwórz niestandardowy skrypt 403, który zamiast tego zwraca błąd 404.

Na przykład w PHP:

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

Teraz skonfiguruj Apache, aby używał tego skryptu dla wyników 403:

ErrorDocument 403 /403.php

Brak bałaganu dzięki przepisywaniu i natychmiast działa na całym serwerze.

Gerald Schneider
źródło
Czy to nadal nie wyświetla się jako 403 dla osób zgarniających serwer?
IRGeekSauce,
1
Nie. Serwer odpowie prawidłowym błędem 404 z powodu header()polecenia.
Gerald Schneider
-1, ponieważ niestandardowy komunikat o błędzie może być! = Komunikat o błędzie serwera (czy to nging, apache czy cokolwiek innego). To ostatnie rozwiązanie, jeśli nie ma możliwości skonfigurowania serwera lub korzystania z plików .htaccess. Dodatkowo to rozwiązanie nie uniemożliwi Ci DirBustering twojej witryny, ponieważ nadal możesz odróżnić takie „niestandardowe komunikaty o błędach” od komunikatów o błędach serwera.
Awaaaaarghhh
0

Moje rozwiązanie, aby przestać wyświetlać zawartość katalogu jako listę i wyświetlić błąd 404, jest proste. Utwórz plik .htaccess w katalogu głównym swojego projektu i zapisz, które katalogi powinny być chronione.

Struktura katalogów

- 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

Drugi wiersz .htaccess zabrania dostępu do elementów listy w katalogu aplikacji i wszystkich jej podrzędnych.

Trzeci wiersz .htaccess zabrania dostępu do elementów listy w katalogu modeli i wszystkich jego podrzędnych.

Czwarty wiersz .htaccess ustawia własny błąd 404 (jeśli nie chcesz wyświetlać domyślnego błędu apache).

Pamiętaj, aby wyczyścić pamięć podręczną w przeglądarce podczas pracy z htaccess.

Bez nazwy
źródło