Как заблокировать чтение/выполнение определённых типов файлов в apache?

Аватар пользователя admin

Часто из соображений безопасности бывает необходимо заблокировать прямое чтение или выполнение файлов в каких-либо каталогах, например, в тех, куда пользователю разрешено закачивать какие-то персональные файлы. Чтобы не допустить запуска произвольного скрипта на сайте, прямого доступа к этим файлам не должно быть. Для этого необходимо сделать следующее (для apache версий 2.2.x):

  1. Убедиться, что в настройках apache и/или виртуалхоста в директиве AllowOverride даны права на включение .htaccess и переоределение директив Limit.
  2. Создать в нужном каталоге файл .htaccess приблизительно следующего содержимого:
<FilesMatch ".(htaccess|htpasswd|ini|php|phps|sh|pl|cgi|html|phtml)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>

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

  Order Allow,Deny
  Deny from all

 

Внимание! Не забывайте, что у вас обязательно должен быть подключен в apache модуль mod_authz_host, иначе вам выдаст ошибку 500, а в логе apache будет сообщение о неизвестной директиве в файле .htaccess.

Если вы всё сделали правильно, то при попытке запросить любой из попадающих под действие директив файл, вы получите ошибку 403 - Forbidden (доступ запрещён).

0
Ваш рейтинг: Нет