Назад | Перейти на главную страницу

Директива apache -Directory - разрешить обслуживание выбранных страниц

Похоже, этот синтаксис не позволяет Apache обслуживать любые страницы из / var / www или подкаталогов.

 <Directory "/var/www">
     Allow from None
     Order allow,deny
 </Directory>

Я хочу, чтобы это поведение было общим правилом, за некоторыми исключениями. Например, я хочу, чтобы у пользователей был доступ к

 /var/www  
 /var/www/css
 /var/www/js

но нет:

 /var/www/app
 /var/www/xml
 /var/www/foo
 /var/www/bar
 ... and many more

Вы могли бы работать с DirectoryMatch чтобы установить правило запрета для большинства каталогов, кроме некоторых из них.

Но я думаю, что ваша настоящая проблема в том, что у вас много папок в корне вашего веб-каталога (/ var / www), и вы не хотите, чтобы кто-либо имел доступ к этим каталогам. Так почему они здесь?

Более чистая организация пути:

  • / путь / к / проекту: корень проекта
  • / путь / к / проекту / www : проект корень документа apache (DocumentRoot))
  • / path / to / project / www / [js | css]: некоторые допустимые веб-ресурсы
  • / путь / к / проекту / lib : библиотеки приложения, код
  • / path / to / project / lib / [app | xml | foo | bar]: библиотеки приложения, код
  • / путь / к / проекту / [etc | doc | var | tmp]: прочее

Apache не может получить доступ к чему-либо до DocumentRoot, кроме случаев, когда вы устанавливаете некоторые псевдонимы, но псевдонимы вам не нужны. все вещи, которые не требуют прямого доступа через URL-адрес, не должны находиться в DocumentRoot. Большинство CMS игнорируют это основное правило просто потому, что они хотят, чтобы их можно было легко развернуть на очень жестких политиках хостов (где у вас есть доступ только к корню документа через ftp).

Это можно сделать на любом языке, jsp 'asp' php. Вам нужен только бутстрапер файла (а именно index.php, index.jsp, index.asp) в корне веб-каталога, любой другой ресурс загружается в приложение через директивы include и настройки пути к библиотеке.

Благодаря этому вы избежите множества проблем с раскрытием информации (за исключением всего, что вы можете найти прикрепленным к пакетам js-библиотек, не забудьте приостановить выполнение php на пути к js-ресурсам).

Если вы не разрешаете ни от кого или запрещаете все, то доступ к содержимому каталога будет запрещен никому.

если вы хотите более точный контроль, чем все или ничего, вам следует взглянуть на контроль доступа в документах apache, которые в основном

[ allow | deny ] from address

адрес может быть доменом, IP или именем хоста.