Защита видео и изображений от хотлинка

12
fliger
На сайте с 17.09.2015
Offline
106
#11
Stek:
Гораздо веселее не запрещать хотлинк, а подсовывать другой контент.

Ага, а потом из-за него уже вам не весело будет, поскольку он либо с вашего домена грузится, либо с чужого через ваш же редирект.

neoks
На сайте с 17.03.2010
Offline
152
#12

karpo518, мне кажется проблема не в nginx, а в php

Посмотрите что передается в переменную $url, "/fail.mp4" или "http://domain.ua/fail.mp4" ?

Закинул для теста на сервер, все работает.

http://profi.ngens.ru/secure_link.php

root@:~# php -v
PHP 5.6.33-0+deb8u1 (cli) (built: Jan 5 2018 15:46:26)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

root@:~# nginx -v
nginx version: nginx/1.12.2

<?
function buildSecureLink($url, $secret, $ttl = 10000)
{
$userIp = $_SERVER['REMOTE_ADDR'];
$expires = time() + $ttl;
$md5 = md5($expires.explode('?', $url)[0].$userIp.' '.$secret, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);

if(strpos($url, '?') !== false)
{
return $url . '&md5=' . $md5 . '&expires=' . $expires;
}

return $url . '?md5=' . $md5 . '&expires=' . $expires;
}

echo 'http://profi.ngens.ru' . buildSecureLink('/Chemistry.mp4?arg=1&arg=2', 'secret');
?>


---------- Добавлено 12.06.2018 в 19:00 ----------

Продебажить md5 не получится, но можете сравнить данные которые передаете в md5

NGINX

location ~ \.mp4$ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr secret";
return 200 "$secure_link_expires$uri$remote_addr secret";
}

PHP

function buildSecureLink($url, $secret, $ttl = 10000)
{
$userIp = $_SERVER['REMOTE_ADDR'];
$expires = time() + $ttl;

return $expires.explode('?', $url)[0].$userIp.' '.'secret';
}
K5
На сайте с 13.07.2014
Offline
49
#13

neoks, спасибо за помощь. Я всё-таки докопался до истины. Wordpress пропускал url через заменялку спец-символов на html-сущности. В результате & заменялся на &amp; Странно, что это вообще повлияло на результат. На мой взгляд, nginx должен проглатывать такой символ корректно. Вобщем-то я отключил это преобразование, и всё заработало как надо.

Осталось отключить проверку для ПС. Мой код ниже будет корректно отвечать поисковым ботам и запросам от яндекс.видео?

location ~ \.mp4$ {

mp4;
mp4_buffer_size 1m;
mp4_max_buffer_size 5m;

if ($http_referer ~* '(yandex|google|bing|mail|rambler)') {
break;
}

if ($http_user_agent ~* '(yandex|google|bing|mail|rambler)') {
break;
}

secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr suka24.com";

if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }

}
neoks
На сайте с 17.03.2010
Offline
152
#14

karpo518, В плане кода все правильно, но лучше поставить на недельку логи и смотреть ошибки 403/410, потому что я хз какие там юсерагенты у видео бота и хз какой рефер передается при просмотре ролика с яндекс.видео :)

S
На сайте с 23.05.2004
Offline
316
#15
fliger:
Ага, а потом из-за него уже вам не весело будет, поскольку он либо с вашего домена грузится, либо с чужого через ваш же редирект.

А что там не веселого ? Нелегал не грузите да и все. В конце концов никто не мешает проталкивать контент с рекламой вашего же ресурса - одна польза только.

Хотлинк с мелких ресурсов часто может наоборот дать чуть больше посетителей.

Это просто подпись.
fliger
На сайте с 17.09.2015
Offline
106
#16
Stek:
А что там не веселого ? Нелегал не грузите да и все. В конце концов никто не мешает проталкивать контент с рекламой вашего же ресурса - одна польза только.
Хотлинк с мелких ресурсов часто может наоборот дать чуть больше посетителей.

Я подразумевал отдачу хотлинкерам вирусов, страниц с порно и прочее, редирект на сайты чекистов и т.д., за что потом бумерангом вернется - и по башке.

S
На сайте с 23.05.2004
Offline
316
#17

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

neoks
На сайте с 17.03.2010
Offline
152
#18
Stek:
В конце концов никто не мешает проталкивать контент с рекламой вашего же ресурса - одна польза только.

Вот это действительно нужная вещь, учтивая что контент есть на других сайтах.

Так можно и часть посетителей переманить.

Namiaro
На сайте с 18.06.2018
Offline
16
#19
Stek:
Гораздо веселее не запрещать хотлинк, а подсовывать другой контент.

Тут я с вами полностью согласен, очень весело сделать свою проблему чужой, а не просто ее устранить😡

12

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