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

Каким образом можно предотвратить прямой доступ к определенным каталогам веб-сайта?

1- Создание и размещение файла .htaccess в каждом каталоге, который мы хотим защитить, и поместить в него следующую строку:

 Deny from all 

2- Создание и размещение файла index.php в каждом каталоге, который мы хотим защитить, и размещать в нем только следующую строку кода (которая будет перенаправляться на домашнюю страницу веб-сайта):

 <?php header("Location: http://" . $_SERVER['HTTP_HOST']); ?> 

3- Что-то еще (что это такое?)

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

Чтобы определить корень вашего документа, вы можете просто $_SERVER['DOCUMENT_ROOT'] переменную PHP $_SERVER['DOCUMENT_ROOT'] . Поэтому, если ваш корень /var/www/html , вы можете создать папку /var/www/protected_folder а Apache (или другой веб-сервер) никогда не будет служить ему (если только файл http.conf не изменен для изменения корневой папки документа ).

Если папка должна быть в корне документа, то использование файла .htaccess для DENY или перенаправления является хорошей альтернативой.

Как упоминал TerryE, вы также можете использовать разрешения файлов на уровне ОС, чтобы запретить пользователю Apache доступ к папке (например, установить другого пользователя в качестве владельца, а затем установить разрешение на папку до 700 ). Если они попытаются получить доступ к папке, они получат 403 Forbidden Error, которые вы не захотите показывать (хотя вы можете настроить собственный обработчик ошибок 403 в http.conf или htaccess ). В зависимости от того, что вы пытаетесь сделать, вам может потребоваться такой подход, так как он также позволит вам запретить доступ к скриптам (например, PHP include() т. Д.), Если вы хотите, поскольку PHP работает под пользователем веб-сервера по умолчанию. Основным недостатком этого подхода является то, что разрешения на доступ к файлам часто не сохраняются во время миграции (если они выполняются неправильно), а разрешения файлов иногда могут быть случайно сброшены при изменении разрешений родительских папок с помощью рекурсивного флага (в то время как маловероятно, что кто-то нечаянно переместите папку в корень документа).