Реклама на сайте Advertise with us

-

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

💀💀💀

С нами с 31.05.10
Сообщения: 4688
Рейтинг: 727

Ссылка на сообщениеДобавлено: 16/05/14 в 21:17       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:10), всего редактировалось 1 раз

0
 



С нами с 30.04.04
Сообщения: 602
Рейтинг: 293

Ссылка на сообщениеДобавлено: 16/05/14 в 21:46       Ответить с цитатойцитата 

1. Генерится токен, в который зашифровано время; этот токен присутствует в урле. Без валидного токена видео не показывается. Расшифровать этот токен умеет только твой софт, который знает секретный ключ (например веб-сервер, который отдаёт статику или скрипт через который эта статика отдаётся). Если после расшифровки токена он НЕ считается валидным (время больше определенного), то заворачиваем просмотр в жопу. Если валидный, то всё ок и отдаём контент.

2. Генерим какой-нибудь мини-токен и записываем его в какое-нибудь быстрое key => value хранилище, которое умеет экспайрить ключи (например мемкэш). При заходе по урлу веб-сервер (например nginx) идет в мемкэш и ищет такой токен. Если токен найден, то всё ок. А если токен проэкспайрился и исчез, то извиняйте - 404.

Оба варианта хороши.

5
 

💀💀💀

С нами с 31.05.10
Сообщения: 4688
Рейтинг: 727

Ссылка на сообщениеДобавлено: 16/05/14 в 22:24       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:10), всего редактировалось 1 раз

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 17/05/14 в 01:29       Ответить с цитатойцитата 

Схематично.

database_1.tokens2
Код:
CREATE TABLE IF NOT EXISTS `tokens2` (
  `file` varchar(256) NOT NULL,
  `token` varchar(32) NOT NULL,
  `expire` int(11) NOT NULL
) ENGINE=MyISAM

token.php
Код:
<?php
function url ($file, $expire) {
    $token = md5(uniqid(rand(), true));
    $expire = time() + $expire;
    $mysqli = new mysqli('localhost', 'root', '', 'database_1');
    $s = $mysqli->prepare("INSERT INTO tokens2 VALUES (?, ?, ?)");
    $s->bind_param('ssi', $file, $token, $expire);
    $s->execute();
    $s->close();
    return 'test.php?' . http_build_query(array(
        'file' => $file,
        'token' => $token
    ));
}
function validate ($file, $token) {
    $expire = null;
    $mysqli = new mysqli('localhost', 'root', '', 'database_1');
    $s = $mysqli->prepare("SELECT expire FROM tokens2 WHERE file=? AND token =?");
    $s->bind_param('ss', $file, $token);
    $s->execute();
    $s->bind_result($expire);
    $s->fetch();
    $s->close();
    if (null !== $expire) {
        $expired = time() > $expire;
        if ($expired) {
            $s = $mysqli->prepare("DELETE FROM tokens2 WHERE file=?");
            $s->bind_param('s', $file);
            $s->execute();
            $s->close();
        }
        return ! $expired;
    }
    else {
        die ('Invalid file or token');
    }
}
function handle ($file, $token) {
    if (true === validate($file, $token)) {
        header('Location: /files/' . $file);
    }
    else {
        die ('Link expired');
    }
}

test.php
Код:
<?php
require 'token.php';
if (isset($_GET['file']) and isset($_GET['token'])) {
    handle($_GET['file'], $_GET['token']);
}
else {
    ?><a href="<?php echo url('1.jpg', 60); ?>" target="_blank">1.jpg (Expire after 60 sec.)</a><?php
}

Кладем в папку /files/ файл 1.jpg и открываем test.php

icon_smile.gif

2
 

💀💀💀

С нами с 31.05.10
Сообщения: 4688
Рейтинг: 727

Ссылка на сообщениеДобавлено: 17/05/14 в 05:48       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:10), всего редактировалось 1 раз

0
 



С нами с 30.04.04
Сообщения: 602
Рейтинг: 293

Ссылка на сообщениеДобавлено: 17/05/14 в 10:14       Ответить с цитатойцитата 

Ailk писал:
варианты проверок токенов с пхп не рассматриваю в силу того, что на данный момент на любом сервере(нгинкс, апач) существует решение в виде различных модулей секьюр линк. Оно получается гораздо легче для сервера и не требует базы. К сожалению все эти модули задействуют мд5 (чего крайне не хотелось бы).


А почему тебя так смущают какие-то доп. параметры в урле к статике? Вполне себе явление. Можешь рерайтами сделать этот md5 частью url'а:

Вместо video.ext?token=0123456789abcdef0123456789abcdef
/0123456789abcdef0123456789abcdef/video.ext
/0123456789abcdef/0123456789abcdef/video.ext

Как угодно... Можно не весь токен использовать, а только его часть, например.

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 17/05/14 в 10:17       Ответить с цитатойцитата 

а nginx умеет шифровать урлы для статики, без бд?

0
 

💀💀💀

С нами с 31.05.10
Сообщения: 4688
Рейтинг: 727

Ссылка на сообщениеДобавлено: 17/05/14 в 11:40       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:10), всего редактировалось 1 раз

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 17/05/14 в 12:15       Ответить с цитатойцитата 

Ailk писал:

Шифровать незнаю, а во расшифровывать - да. Хотя нет, немного не так. Сверять зашифрованное по алгоритму умеет.


то есть может отдать файл 1.avi по линку 0123456789abcdef0123456789abcdef.avi и при это напрямую скачать файл 1.avi не получится?
есть пруфы почитать, как это делается?

0
 

💀💀💀

С нами с 31.05.10
Сообщения: 4688
Рейтинг: 727

Ссылка на сообщениеДобавлено: 17/05/14 в 16:40       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:11), всего редактировалось 2 раз(а)

0
 



С нами с 30.10.12
Сообщения: 3121
Рейтинг: 2542


Передовик Master-X (16.02.2018) Передовик Master-X (01.03.2018) Передовик Master-X (01.05.2018) Передовик Master-X (16.05.2018) Передовик Master-X (01.07.2018) Ветеран трепа Master-X (16.09.2018)
Ссылка на сообщениеДобавлено: 17/05/14 в 16:52       Ответить с цитатойцитата 

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

http://affiliates.crakrevenue.com/registration?r=69613

0
 



С нами с 20.11.08
Сообщения: 74
Рейтинг: 16

Ссылка на сообщениеДобавлено: 27/05/14 в 09:04       Ответить с цитатойцитата 

достаточно разместить видео на сдн с функцией авторизации по токену и никаких скриптов придумывать не нужно. Тот же квс + какой-нить сдн нормальный (в личке могу сказать какой у меня если нужно) сразу же дает это решение - ссылка на видео работает заданное время (у меня 2 часа например)

0
 



С нами с 06.07.14
Сообщения: 8

Ссылка на сообщениеДобавлено: 08/07/14 в 05:08       Ответить с цитатойцитата 

Всем привет. Надо именно то, что описано в этой теме. Кто может сделать – пишите в личку (желательно с номером icq).
Имеется старый кошель Вебмани с большим БЛ, а также морда на серче.
За пример берите тюб dojki.com.

0
 
+ +
WP-Master

С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123


Передовик Master-X (16.02.2015) Передовик Master-X (01.03.2015)
Ссылка на сообщениеДобавлено: 08/07/14 в 09:51       Ответить с цитатойцитата 

trollface.png расшифровывать урлы... лоооол.

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »