Как защитить *.inc файлы

Kubiki

Новичок
Как защитить *.inc файлы

У меня стоит задача:
запретить доступ к *.inc файлам (файлы вставки в php-сценарий).

Нашел два решения:

1. Создать две директории:
www - доступна всем, содержит страницы сайта
inc - доступ запрещен на уровне Apache, содержит файлы-вставки и функции.
Недостаток: ухудшаеться прозрачность структуры каталога.

2. Размещать inc файлы в структуре общедоступной директории www, но при этом поставить им расширение php (чтобы они без обработки не загружались) и наполнить их одними лишь функциями. При прямом запуске такого скрипта выводится пустая страница.
Недостаток: Все таки такой скрипт можно запустить (и не дай бог забыть и разместить там что нибудь отличное от функции).

Пока остановился на первом варианте. Подскажите из опыта, где Вы храните inc файлы в файловой структуре сайта и как реализована защита от их прямого запуска?
 

ForJest

- свежая кровь
3. Можно ещё запретить с помощью .htaccess
4. Вынести inc за пределы видимости www
 

Кром

Новичок
5. Можно назвать их file.inc.php

>Недостаток: Все таки такой скрипт можно запустить (и не дай бог забыть и разместить там что нибудь отличное от функции).

Чтобы этого не случилось, надо четко представлять себе структуру своего сайта.
 

HEm

Сетевой бобер
Re: Как защитить *.inc файлы

вариант раз: file.inc.php, да, нужно следить немного за кодом, при определенном стиле это не так трудно

вариант два: запретить доступ к файлам *.inc средствами .htaccess - самый красивый, удобный и простой способ

вариант три: писать настолько ядреный код, что даже наличие исходников ничем не поможет злоумышленникам (как пример - ткнись в ссылку show source в любом месте сайта php.net, например http://www.php.net/source.php?url=/cal.php)
 

Kubiki

Новичок
Спасибо ВСЕМ за советы.
Буду делать защиту inc-файлов через .htaccess
 

confguru

ExAdmin
Команда форума
Всегда было достаточно - чтоб php их парсил ну и все либы вынести за www
т.е. то что не используется для запросов напрямую не должно лежать в
www
У путь к каталогу с либами нужно задать через define('MY_LIB_DIR',путь)
 

Falc

Новичок
Kubiki
Либы удобнее всего держать в отдельном каталоге, например lib/
Так и нагляднее получается. Сам католог можно вынести за пределы корня www, или закрыть .htaccess'ом

И потом мне кажется что правельнее давать таким файлам расширение .php - так как в них лежит php-код.
 

HEm

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

Фанат

oncle terrible
Команда форума
Буду делать защиту inc-файлов через .htaccess
недостаток:
при переносе или реструктуризации сайта
не дай бог забыть и разместить
не там, где надо.
и это гораздо большая беда.

резюме.
Учись мыслить шире и не противопоставлять методы, или-или, а объединять.
закрывай хтаксессом, НО имя все равно давай пхп.
 

neko

tеam neko
KR
а какие критерии у тебя?
если "лишь бы работало", то у меня есть еще пара идей с двумя серверами и фв

тут сделать надо всего ничего
выше написано как
зачем сюда реврайт приплетать
 

KR

alive in new life
neko, для данной конкретной задачи, соглашусь, что не надо.

с другой стороны у меня уже давно работает CMS, где все реврайтится на index.php, а уже сам ПХП занимается парсингом урла и т.д.
в итоге получается приблизительно тоже, что у Ямерта, поскольку прямой доступ ни к одному физическому файлу получить нельзя.
 

neko

tеam neko
а action не судьба прописать?

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

KR

alive in new life
вот видишь, обнаружился еще один способ решения поставленной задачи.

мы же не говорим делай то-то и то-то и будет тебе счастье, мы говорим, что можно так, так и вот эдак, но лучше первое и второе, а человек уже сам будет решать, что именно ему нужно.

Только в этом разница.
 

neko

tеam neko
он "обнаружился" когда еще никакого реврайта в помине не было

как самоочевидный
 
Сверху