Deaktivieren Sie Verzeichnislisten mit 404 anstelle von 403

9

Ich habe Verzeichnislisten wie diese deaktiviert ...

Options -Indexes

Wenn ich versuche, auf ein Verzeichnis wie dieses zuzugreifen:

www.example.com/secret/

Ich erhalte eine verbotene Antwort.

Ich möchte jedoch eine 404 Not Found- Antwort, sodass Hacker meine Verzeichnisstruktur nicht so einfach erraten können. Wie würde ich das machen?

Rik Heywood
quelle
Mir ist das klar, aber es macht keinen Sinn, es irgendjemandem leicht zu machen, zumal es so wenig Mühe kostet, es schwieriger zu machen.
Rik Heywood

Antworten:

8

Aktivieren Sie mod_rewrite und AllowOverride in / secret. Erstellen Sie dann .htaccess:

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

Erstellen Sie ein benutzerdefiniertes 403-Skript, das stattdessen einen 404-Fehler zurückgibt.

Zum Beispiel in PHP:

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

Konfigurieren Sie nun Apache so, dass dieses Skript für 403 Ergebnisse verwendet wird:

ErrorDocument 403 /403.php

Kein Durcheinander mit Umschreibungen und es funktioniert sofort für den gesamten Server.

Gerald Schneider
quelle
Wird dies nicht immer noch als 403 für Leute angezeigt, die den Server abkratzen?
IRGeekSauce
1
Nein. Der Server antwortet aufgrund des header()Befehls mit einem korrekten 404-Fehler .
Gerald Schneider
-1, weil Ihre benutzerdefinierte Fehlermeldung möglicherweise lautet! = Ihre Server-Fehlermeldung (sei es Nging oder Apache oder was auch immer). Dies ist die letzte Lösung, wenn es keine Möglichkeit gibt, Ihren Server zu konfigurieren oder .htaccess-Dateien zu verwenden. Darüber hinaus hindert Sie diese Lösung nicht daran, Ihre Website mit DirBustering zu versehen, da Sie solche "benutzerdefinierten Fehlermeldungen" weiterhin von Serverfehlermeldungen unterscheiden können.
Awaaaaarghhh
0

Meine Lösung, die Anzeige des Verzeichnisinhalts als Liste zu beenden und einen 404-Fehler anzuzeigen, ist einfach. Erstellen Sie eine .htaccess-Datei im Stammverzeichnis Ihres Projekts und schreiben Sie, welche Verzeichnisse geschützt werden sollen.

Verzeichnisstruktur

- 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

Die zweite Zeile von .htaccess verbietet den Zugriff auf Listenelemente im App-Verzeichnis und allen zugehörigen Unterverzeichnissen.

In der dritten Zeile von .htaccess ist der Zugriff auf Listenelemente im Modellverzeichnis und allen zugehörigen Unterverzeichnissen nicht zulässig.

Der vierte Teil der .htaccess-Zeile legt unseren eigenen 404-Fehler fest (wenn Sie keinen Apache-Standardfehler anzeigen möchten).

Denken Sie daran, den Cache in Ihrem Browser zu löschen, wenn Sie mit htaccess arbeiten.

Kein Name
quelle
-2

Verwenden Sie .htaccess, um Fehler zu maskieren. Siehe diese Anleitung:

http://www.tarahost.net/pages/web-design/29371.php

ed209
quelle
3
Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Dieser Link ist jetzt tot und somit ist diese Antwort jetzt nutzlos
Mark Henderson