Защита файлов для скачивания

Sanu0074
На сайте с 31.08.2012
Offline
110
1370

Здравствуйте!

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

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Хорошо было бы, если придумать что-то такое как например у DropBox или ЯндексДиск! Интересно как это у них работает?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

Например, на странице где ссылка - ставьте куки с ключом, а по ссылке загрузки - проверяйте наличие этой куки.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Sanu0074
На сайте с 31.08.2012
Offline
110
#2
Оптимизайка:
Например, на странице где ссылка - ставьте куки с ключом, а по ссылке загрузки - проверяйте наличие этой куки.

И что это даст?

Браузер предлагает скачать файл, выдает прямую ссылку. Этим можно защитить способом только сам скрипт, типа если на стороннем сайте размещать так: http://site.ru/download.php?id=999 - то пройдет проверка этих кук, но сам download.php формирует заголовки и в результате направлят нас на файл который соответствует ?id, например http://site.ru/content/999/file.zip, а вот его то уже не защитить!! А у dropbox, ядиск и пр. это предусмотрено! Вот незнаю как такое реализовать... (то что в .htaccess проверяется HTTP_REFERER - этого недостаточно)

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3
Sanu0074:
И что это даст?
Браузер предлагает скачать файл, выдает прямую ссылку. Этим можно защитить способом только сам скрипт, типа если на стороннем сайте размещать так: http://site.ru/download.php?id=999 - то пройдет проверка этих кук, но сам download.php формирует заголовки и в результате направлят нас на файл

Нет, нужно сделать чтобы скрипт не отправлял на файл редиректом, а сам читал его и выдавал. Ну или говорил nginx'у об этом. Без скрипта, проверяющего куки, не должно быть возможности файлы качать, естественно.

astraliens
На сайте с 25.09.2009
Offline
54
#4

если использовать nginx, то есть такая штука как "X-Accel-Redirect"

закрываете прямое скачивание, при переходе на файл отдаете управление скрипту, делаете нужные проверки, потом если все в норме - добавляете "X-Accel-Redirect" - вуаля, профит

ASTRALiENS - разработка сайтов (http://astraliens.net)
Sanu0074
На сайте с 31.08.2012
Offline
110
#5

А без ngix можно сделать?

если file_get_contents() использовать, то при размере файла в 100мб, это сильно нагрузит сервер?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#6

Каждый клиент будет отъедать по 100 мб памяти, если через file_get_contents делать, до тех пор, пока не скачает. Сколько у Вас файлов качается в сутки? Лучше читать - отдавать файл кусочками, чтобы экономить оперативку.

IL
На сайте с 20.04.2007
Offline
435
#7
Sanu0074:
если file_get_contents() использовать, то при размере файла в 100мб, это сильно нагрузит сервер?

Смотря какой сервер.. может и не заметить.

Проще всего сделать и посмотреть... на реакцию хостера или посетителей.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
astraliens
На сайте с 25.09.2009
Offline
54
#8
Sanu0074:
А без ngix можно сделать?
если file_get_contents() использовать, то при размере файла в 100мб, это сильно нагрузит сервер?

можно http://php.net/manual/en/function.readfile.php

Sanu0074
На сайте с 31.08.2012
Offline
110
#9

Всем спасибо) ответ получил)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий