Désactiver les listes de répertoires avec 404 au lieu de 403

9

J'ai désactivé les listes de répertoires comme ça ...

Options -Indexes

Lorsque j'essaie d'accéder à un répertoire comme celui-ci: -

www.example.com/secret/

Je reçois une réponse interdite 403 .

Cependant, je veux une réponse 404 Not Found , donc les pirates ne peuvent pas deviner ma structure de répertoire si facilement. Comment ferais-je ça?

Rik Heywood
la source
Je m'en rends compte, mais cela ne sert à rien de le rendre facile pour quiconque, d'autant plus qu'il faut si peu d'efforts pour le rendre plus difficile.
Rik Heywood

Réponses:

8

Activez mod_rewrite et AllowOverride dans / secret. Créez ensuite .htaccess:

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

Créez un script 403 personnalisé qui renvoie à la place une erreur 404.

Par exemple, en PHP:

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

Maintenant, configurez Apache pour utiliser ce script pour les résultats 403:

ErrorDocument 403 /403.php

Pas de problème avec les réécritures et cela fonctionne instantanément pour l'ensemble du serveur.

Gerald Schneider
la source
Cela ne s'affichera-t-il pas toujours en tant que 403 pour les utilisateurs qui grattent le serveur?
IRGeekSauce
1
Non. Le serveur répondra avec une erreur 404 correcte en raison de la header()commande.
Gerald Schneider
-1, car votre message d'erreur personnalisé peut être! = Le message d'erreur de votre serveur (que ce soit nging ou apache ou autre). C'est la dernière solution s'il n'y a aucun moyen de configurer votre serveur ou d'utiliser des fichiers .htaccess. De plus, cette solution ne vous empêchera pas de DirBustering votre site Web, car vous pouvez toujours distinguer ces "messages d'erreur personnalisés" des messages d'erreur du serveur.
Awaaaaarghhh
0

Ma solution pour arrêter d'afficher le contenu du répertoire sous forme de liste et d'afficher l'erreur 404 est simple. Créez un fichier .htaccess dans le répertoire racine de votre projet et écrivez quels répertoires doivent être protégés.

Structure des répertoires

- 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

La deuxième ligne de .htaccess interdit l'accès aux éléments de la liste dans le répertoire de l'application et tous ses sous-secteurs.

La troisième ligne de .htaccess interdit l'accès aux éléments de liste dans le répertoire des modèles et tous ses sous-secteurs.

La quatrième ligne de .htaccess définit notre propre erreur 404 (si vous ne souhaitez pas afficher l'erreur par défaut d'Apache).

N'oubliez pas de vider le cache de votre navigateur lorsque vous travaillez avec htaccess.

Sans nom
la source