Re: URL с временными токенами

Maxim Dounin mdounin на mdounin.ru
Вт Май 11 14:43:05 MSD 2010


Hello!

On Tue, May 11, 2010 at 05:32:18AM -0400, softshape wrote:

> стоит задача спрятать прямой путь к некоторым файлам 
> (изображения из галерей с ограниченным доступом). Сам доступ 
> проверяется бакэндом, а вот отдачу картинок хочется все-таки 
> делать nginx'ом. Пришла в голову одна идея, но реализуема она ?
> 
> 1) Бакэнд генерит случайный токен (типа QLOA83H7FMP) и сохраняет 
> в memcache его самого (как ключ) и время окончания его действия 
> (как значение). Допустим, это будет 10 минут.
> 2) URL'ы изображений на защищаемой странице выглядят как 
> domain.ru/img/QLOA83H7FMP/picture.jpg.
> 3) Дальше немного магии - для файлов внутри /img/ nginx 
> извлекает из URL'а токен, ищет его в memcached и если находит и 
> его expiration-время не вышло, делает proxy-pass на секретный 
> путь, где фактически лежит изображение - 
> /img/private-path/picture.jpg. 

А зачем так сложно и дорого, не говоря уже о том что ненадёжно 
(ибо memcached может промотать запись не только из-за expire)? 
Я бы рекомендовал взять модуль secure link, читать тут:

http://sysoev.ru/nginx/docs/http/ngx_http_secure_link_module.html

Если очень нужен expiration - то можно либо зашить время в 
подписываемую часть URL и проверять дополнительно (e.g. через 
встроенный перл), либо взять что-либо из аналогов со встроенной 
поддержкой expiration'а.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru