Ограничить доступ к каталогу по типу файла - PullRequest
2 голосов
/ 13 февраля 2011

Мой Google-фу подводит меня на этом ...

Я пытаюсь создать конфигурацию Apache, которая разрешает доступ только к файлам изображений, js и css в определенном каталоге.

Например, следующий URL должен работать:

mysite.com / реж / image.gif

но это должно быть заблокировано:

mysite.com / реж / page.php

Часть, с которой я борюсь - заставить ее работать только для / dir /. Эта директива не должна влиять на остальные каталоги вне / dir /.

Это то, что я имею до сих пор, которое не делает то, что мне нужно (похоже, относится ко всем каталогам).

<FilesMatch "\.(gif|jpe?g|jpg|png|js|css)$">
  Order deny,allow
  Allow from all
</FilesMatch>

Как разрешить доступ только к определенным типам файлов в / dir /, но не повлиять на остальные мои каталоги?

Ответы [ 3 ]

4 голосов
/ 20 ноября 2012

Я недавно использовал это:

Options -ExecCGI -Indexes
<FilesMatch "\.*$">
deny from all
</FilesMatch>
<FilesMatch "\.(png|jpg|gif|css)$">
allow from all
</FilesMatch>

Я не смог найти явную документацию по этому вопросу, но для FilesMatch оказалось, что Apache не закорачивается при первом совпадении. Он обрабатывает все правила .htaccess.

Таким образом, первое правило блокирует доступ ко всем типам файлов, а второе разрешает выбранные типы.

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

2 голосов
/ 13 февраля 2011

Для простоты, когда я делаю это, я обычно помещаю все медиа-файлы в их собственную директорию.Однако, если это не вариант, вы можете попробовать директиву FilesMatch:

http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch

Вы можете поместить FilesMatch в каталог.

0 голосов
/ 13 февраля 2011

Я бы вообще использовал для этого mod_rewrite

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^/my_dir/[^/]+\.php$
RewriteRule .* - [F]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...