Отключить списки каталогов с 404 вместо 403

9

Я отключил списки каталогов, как так ...

Options -Indexes

Когда я пытаюсь получить доступ к каталогу, как это: -

www.example.com/secret/

Я получаю 403 Запрещенный ответ.

Однако я хочу получить ответ 404 Not Found , чтобы хакеры не могли так легко угадать мою структуру каталогов. Как бы я это сделал?

Рик Хейвуд
источник
Я понимаю это, но нет никакого смысла облегчать это кому-либо, тем более, что для того, чтобы сделать его труднее, требуется очень мало усилий.
Рик Хейвуд

Ответы:

8

Включите mod_rewrite и AllowOverride в / секретном. Затем создайте .htaccess:

RewriteEngine On
RewriteBase   /secret
RewriteRule   ^$ - [R=404,L]
ooshro
источник
1

Создайте собственный сценарий 403, который вместо этого возвращает ошибку 404.

Например, в PHP:

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

Теперь настройте Apache для использования этого скрипта для 403 результатов:

ErrorDocument 403 /403.php

Нет переписывает переписывает, и он мгновенно работает для всего сервера.

Джеральд Шнайдер
источник
Разве это все еще не будет отображаться как 403 для людей, очищающих сервер?
IRGeekSauce
1
Нет. Сервер ответит с правильной ошибкой 404 из-за header()команды.
Джеральд Шнайдер
-1, потому что ваше пользовательское сообщение об ошибке может быть! = Сообщение об ошибке вашего сервера (будь то nging или apache или что-то еще). Это последнее решение, если нет способа сконфигурировать ваш сервер или использовать файлы .htaccess. Кроме того, это решение не помешает DirBustering вашему веб-сайту, потому что вы все еще можете различать такие «пользовательские сообщения об ошибках» из сообщений об ошибках сервера.
Awaaaaarghhh
0

Мое решение прекратить отображать содержимое каталога в виде списка и отображать ошибку 404 просто. Создайте файл .htaccess в корневом каталоге вашего проекта и напишите, какие каталоги должны быть защищены.

Структура каталогов

- 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

Вторая строка .htaccess запрещает доступ к элементам списка в каталоге приложения и всех его подкаталогах.

Третья строка .htaccess запрещает доступ к элементам списка в каталоге моделей и всех его подкаталогах.

Четвертая строка .htaccess устанавливает нашу собственную ошибку 404 (если вы не хотите показывать ошибку по умолчанию apache).

Не забудьте очистить кеш в вашем браузере при работе с htaccess.

Без имени
источник
-2

Используйте .htaccess для маскировки ошибок. Смотрите это руководство:

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

ed209
источник
3
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки. Эта ссылка теперь мертва и, следовательно, этот ответ теперь бесполезен
Марк Хендерсон