О web-разработке
и даже немного больше...

Запрет на прямое скачивание файлов

Большинство сайтов на своём «борту» имеют файлы, которые рассчитаны на использование в пределах сайта. Однако сущность интернета позволяет запросто вставлять ссылки на эти файлы на сторонних сайтах, что приводит появлению бесполезного трафика, как следствие дополнительная нагрузка на сервер. Многим владельцем сайтов это может не понравиться и приходится искать решение данной проблемы.

Защитить на 100% от вставки ссылок на файлы из вашего сайта не получиться, однако кое-что существенное сделать все-таки можно. При запросе на сервер в обычном случае браузер посылает HTTP заголовки, среди которых находится заголовок Referer. Говоря простыми словами, данный заголовок указывает на ту страницу, где находился пользователь до этого запроса.

Посредством htaccess мы можем сделать проверку заголовка Referer, которая будет исключать согласно правилу все нежелательные запросы.

Приступим к примеру. Предположим то на нашем сайте https://href.kz есть файлы, которые имеют расширения .jpg, .gif, .png, и нам необходимо защитить эти файлы от загрузки из других сайтов.
Открываем наш файл .htaccess, который следует разместить в директории с файлами. Первым делом включаем механизм преобразования запросов.

RewriteEngine on

Затем составляем условия фильтрации.

# если заголовок HTTP_REFERER не пуст
RewriteCond %{HTTP_REFERER} !^$

# если зашли на сайт, и HTTP_REFERER не равен текущему сайту
[code]RewriteCond %{HTTP_REFERER} !^http://(www.)?href\.kz/.*$ [NC]

# если зашли не со страницы myfile.html из любого домена
RewriteCond %{HTTP_REFERER} !.*/myfile\.html$

# запрет действует для файлов с расширениями
RewriteRule .(jpg|gif|png)$ - [F]
При тестировании может возникнуть ситуация когда правила перенаправления прописаны, однако ничего не работает. В этом случае рекомендуется проверить включен ли модуль mod_rewrite. В конфигурационном файле httpd.conf веб сервера Apache нужно найти строку:
LoadModule rewrite_module modules/mod_rewrite.so
Убедитесь что эта строка не закомментирована, т.к. она подключает модуль mod_rewrite.
Опубликован: 04.10.2014 г.

См. также:

Преимущества и недостатки веб-серверов Nginx и Apache
Как включить сжатие GZip в Nginx?
Подробнее о логах в Apache
Ротация логов в Linux
Denwer в локальной сети
HTTP авторизация
Просмотр списка загруженных модулей Apache
httpd грузит процессор, что делать?

Комментарии

  1. мари пишет:

    а как сделать так, чтобы нельзя было скачать с моего сайта видео?
    его можно смотреть, но скачивать нельзя. Видео файлы находятся на сервере.

  2. Сергей пишет:

    Вечный вопрос, на который нет ответа! Видимо никак...
    До сих пор, после перелопачивания массы инфо в интернете и траты невероятно огромного количества времени, нигде и никто не дал ответа на этот вопрос! Всё вокруг да около, и всё равно, в конечном итоге, всё сводится к загрузке файла! Ну не нужна загрузка многим категорически, нужно только прослушивание!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта