Apache: httpd.conf :-[

DiMA

php.spb.ru
Команда форума
Apache: httpd.conf :-[

Мне надо в одном вирт.хосте ограничить доступ со всех IP. Пишу

<Location />
Order deny,allow
Allow from 1.2.3
Deny from all
</Location>

Все хорошо, с IP пускает только своих.

НО. Команда <LOCATION />перекрывает директиву из глобальной области конфига (и/или из области тогоже вирт.хоста):

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

и .htaccess становиться всем доступен (в пределах действия location). Те же проблемы с .inc файлами. Писать же в каждом витр. хосте

<LOCATION ~ "/\.ht.*$">
deny from all
</Location>

(хоть это решить проблему) либо

<Directory /home/user/www/asd/>
Deny from all
</Directory>

не хочеться... Во-первых скушно, а с Directory - еще и дублирование переменной DocumentRoot. Нужно как-то глобально запретить доступ к .ht* и *.inc + иметь возможноть где надо прикрывать каталоги с помощью Location от доступа (Directory не предалагать - устаную копировать пути, .htacces - тоже). Почему апач работает именно так - понятно. В доке написано, что Location имеет наивысший приоритет и обрабатывается после <files> <directory> и даже после .htaccess! А вот как решить проблему - не написано =)
 

DiMA

php.spb.ru
Команда форума
Хм, мне тут люди подскази юзать <LIMIT GET POST>, но как туда ORDER не засунуть я не понял :)

короче я тут еще ман почитал. Работает вот такой вариант (в вирт.хосте):

<Directory />
Order deny,allow
Allow from 1.2.3
Deny from all
</Directory>

никакого перекрытия <FILES> нет. Ограничения наклыдываются.
 

nail

Guest
имхо нормальной практикой является:
1) использовать расширение .php вместо .inc
2) класть такие файлы в директории, лежащие выше DOCUMENT_ROOT
 

theon

Guest
a c .htaccess propisat' vsjo eto nel'zja?

.
ili tebe imenno v httpd.conf nuzhno?
 

DiMA

php.spb.ru
Команда форума
господа, я же написал - методы вышележащих каталогов или переименование в .php неприемлемы. И вопрос у меня был - как настроить _апач_, а не как можно обойти настройку.

Почему нельзя класть все за пределы веб-каталога. Потому, что лично меня ломает, работать в одном каталоге и держать часть файлов в другом. Это же неудобно! Файлы .inc содержат разные куски кода, которые иногда подключают .php проги и ходит за ними в другой каталог обломно. Да, там еще кто-то может не в тему заметить, что для инклюда из другого каталога не нужно писать к нему путь, но это будет именно не в тему.

Почему нельзя делать только .php файлы, т.е. не делать .inc. Потому, что некоторые куски кода, что выкладываются в .inc, нельзя вызывать напрямую через УРЛ, т.к. они могут и иногда содержат опасные команды. Например, у меня есть 100-кб. алгоритм удаления файлов. Т.к. алгорим большой, помещать его в основную программу нельзя - т.к. он не каждый раз вызывается, по Апач будет тратить много времени на парсинг. Поэтому помещаем в .inc. Помещать в .php нельзя - иначе через УРЛ этот алгоритм можно запускать когда угодно. Конечно, есть простой способ: помещаем такой алгоритм в .php файл, а что бы его не вызвали через УРЛ - заключаем его в функцию. Но вот в этом то и кроется неудобство. Нехочу я ничего помещать в функцию. Ибо это накладно - переменные станут не глобальными. Или же в начале такого файла надо проверять УРЛ, чтобы запретить вызов напрямую. Опять, кто-то может заметить, что в его проектах таких опасных кусков нет, но мне не охота думать - опасен кусок кода или нет. Его надо просто закрыть. Я в некоторых .inc храню вообще не программы, а куски засериаленных переменных (это очень удобно - когда ПХП должен иногда менять такие переменые).

Итак, если кто-то занает, как решить описанные прогблемы средствами самого ПХП - говорите (не думаю, что это возможно). Я описал конкретные причины. Пока же действуем традиционно - методом апача :)
 
Сверху