Защита списка каталогов "Index of ..." - PullRequest
1 голос
/ 22 февраля 2012

все!

На нашем сервере у нас есть каталог «файлы» с материалами для студентов и преподавателей:

http://sample.ru/files/4students/
http://sample.ru/files/4teacherszzz/
http://sample.ru/files/markszzz/
...

В каждом каталоге, когда вы вводите его в свой веб-браузер, отображается страница «Index of / files / 4students /» со списком файлов / подкаталогов.

Но у нас есть проблема: когда ученик печатает http://sample.ru/files/', он может видеть все остальные папки! Но ученики не должны видеть файлы учителей (в папках 4teacherzzz и markszzz).

Итак, мы поместили пустой файл index.html в / files /. И, набрав этот URL, ученик не может видеть другие папки.

Теперь это вопрос: может ли кто-нибудь из студентов (он знает только 'http://sample.ru / files / 4students /' url) получить список URL-адресов в 'http://sample.ru / files /' (может быть, введя специальную команду '/ files /4students/../ 'или так далее)? и как? и как это отрицать?

Проблема в том, что мы должны оставить эту систему папок - это удобнее для учителей (они только копируют файлы в папку на сервере и файлы автоматически появляются на странице «Индекс ...»)

Спасибо за ваши ответы!

1 Ответ

2 голосов
/ 22 февраля 2012

В зависимости от вашей марки веб-сервера - нет. Большинство брендов серверов нормального происхождения (например, Apache, IIS) будут особенно осторожны, чтобы не допустить прекращения любых попыток ../ .. и тому подобного. (Обратите внимание, что некоторые серверы, оптимизированные для прокси / кэширования и аналогичного использования не из источника, вполне могут НЕ делать этого).

Но независимо от того, что вы хотите прочитать документацию очень внимательно. И обратите внимание, что большинство серверов, таких как Apache и IIS, имеют специальные директивы только для этой конкретной проблемы.

Взгляните на «Индексы» - т.е.

<Directory /something/>
   option -Indexes

...

обратите внимание на минус - очень явно отключит индексы (хотя будьте осторожны с символическими ссылками - или также используйте -FollowSymLinks). http://httpd.apache.org/docs/2.0/mod/core.html имеет полную историю.

Обратите особое внимание на раздел «Директива Директории» и обратите внимание на текст:

Будьте осторожны с аргументами пути каталога: они должны буквально соответствует пути файловой системы, который Apache использует для доступа к файлам. Директивы, применяемые к конкретному, не применяются к файлам доступ из этого же каталога по другому пути, например, через различные символические ссылки.

и пример чуть ниже. Таким образом, вы, как правило, захотите заблокировать (-индекс) на нижнем уровне, а затем сделать каталог (сопоставить) для студентов, для которых вы разрешаете индексы.

Ваш трюк с добавлением index.html обычно работает, но учтите, что это просто потому, что mod_autoindex своевременно его прерывает. Это не так гарантировано, как указано выше - в частности, когда у вас есть MultiViews или другие локализации / интернационализация и подобные варианты (язык / кодировка) на вашем сервере. Смотри http://httpd.apache.org/docs/2.2/mod/mod_autoindex.html.

Надеюсь, это поможет,

Dw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...