Хранение файлов скриптов вне веб-корневого каталога

Я видел рекомендации по хранению некоторых или всех файлов php include в другом месте, кроме корневого каталога веб-документа (имя пользователя / public_html в моем случае) по конкретной причине защиты php-файлов с конфиденциальной информацией (например, подключение к базе данных и информация для входа) в случае, если веб-сервер икает и останавливает защиту файлов php, и они становятся «видимыми» для аутсайдеров, которые знают, где искать.

Для меня это кажется несколько параноидальным, но я предполагаю, что люди плохо сжигались на этом, поэтому я готов пойти вперед. Это предложение обычно принимает форму наличия файлов include в виде «../include_files/», поэтому он не находится непосредственно в корневом каталоге документа, а не напрямую доступен для посторонних через веб-сервер.

Мой вопрос заключается в следующем: существует ли существенная разница в безопасности между этим способом и просто помещается в каталог «include_files» под корнем документа и прикрепляется к нему файл .htaccess (с соответствующими записями)? Поместил бы файл .htaccess в «../include_files/» там какое-нибудь значительное улучшение?

ТИА,

Monte

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

Сохранение файлов из веб-корня не является параноидальным, это хорошая практика. Что произойдет, если кто-то обратится к одному из «включенных» файлов напрямую, и он выкидывает выявляющие ошибки, потому что все предварительные файлы не были загружены?

Каждый файл должен иметь собственные проверки безопасности, чтобы убедиться, что он запущен в ожидаемой среде. Каждый исполняемый файл в доступной для сети области является потенциальным ядром безопасности.

Это действительно зависит от того, что у вас есть в ваших include_files . Самое главное, что вы ставите все учетные данные, которые у вас есть вне корня документа (вход в базу данных и т. Д.). Все остальное действительно вторично и не имеет большого значения.

Если вы не хотите, чтобы кто-то украл ваш исходный код, попробуйте следовать соглашениям Zend:

 application library public 

DocumentRoot указывает на public и содержит только файлы мультимедиа, файлы js / css. HTML / views, db logic, conf / credentials находятся в application . Сторонние библиотеки находятся в library .

Теоретически, если вы просто вставляете файл .htaccess в папку, вы все равно можете напрямую обращаться к файлам .php.

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