Используйте .htaccess, чтобы ограничить доступ к загрузке файлов - PullRequest
3 голосов
/ 11 января 2011

У меня есть загрузки для статических файлов, таких как product.exe. Я хочу ограничить доступ к этим файлам с помощью файла .htaccess, чтобы его могли загрузить только определенные пользователи.

Я думаю, что это можно сделать с помощью mod_rewrite, и я нашел этот фрагмент в Интернете блокирует плохие сайты с помощью реферера.

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} http://example.com/downloads/confirm/3811 [NC,OR]
RewriteRule .* - [F]

Источник: http://www.javascriptkit.com/howto/htaccess14.shtml

Вместо блокировки на основе реферера, я хочу разрешить на основе реферера. Таким образом, реферер может быть URL-адресом, к которому нельзя обратиться без предварительного входа в систему. Я думаю о том, чтобы пойти по этому пути и использовать http реферер, чтобы дать разрешение на файл. Я знаю, что это может быть не самый лучший способ сделать это, и я думаю, что реферер может быть подделан, но он не должен быть ТАКИМ безопасным. Я также открыт для других идей, которые могут вам понадобиться для ограничения доступа.

Ответы [ 2 ]

3 голосов
/ 11 января 2011

Если вы хотите разрешить на основе Referrer:

RewriteCond %{HTTP_REFERER} !^http://goodsite-1.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://goodsite-2.com/from/there.php [NC]
RewriteCond %{HTTP_REFERER} !^$ # There are some users/browsers not sending referrer..
RewriteRule .* - [F]

Или вы можете разрешить на основе cookie, который вы можете установить ранее, например, с помощью PHP:

RewriteCond %{HTTP_COOKIE} !^.*cookie-name.*$ [NC]
RewriteRule .* - [F]

Или также разрешить только отправлять запросы:

RewriteCond %{REQUEST_METHOD} !=POST
RewriteRule .* - [F]

и вашу ссылку для «отправки запроса» в вашем HTML-файле на файл для загрузки:

<form method="post" action="path/to/download.mp3">
  <input type="submit" value="Click here to download!" />
</form>

На самом делеВы могли бы объединить эти методы.

0 голосов
/ 20 февраля 2017

Из-за некоторых проблем безопасности http_referrer не является надежным заголовком.

  • Некоторые конфигурации браузера вызывают пустой заголовок http_referrer
  • Существуют инструменты, которыми вы можете манипулировать заголовками http-запросов. Вы можете взглянуть на инструменты разработчика Firefox (Ctrl + Shift + I> Сеть)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...