Отдача файлов (ngix) Принцип и реализация.

Professor

Новичок
А как вам такой вариант:
шифруем путь к файлу.
что то типа такого <img src="/download/dfkgrewcc9rewhg/img.jpg">
ну и название картинки тоже можно шифровать.
Тогда можно не делать проверку.
Если галерея закрытая, то кто знает какой код набирать?

Проблема будет если только галерея была открыта, а потом стала закрытой. тогда могут скачать картинки(теоретически).
 

Professor

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

MiksIr

miksir@home:~$
Ключ-валидатор в URL который проверяется на соответствие сессии клиента и имеет короткое время жизни.

Для nginx есть http://wiki.nginx.org/NginxHttpSecureDownload и не так давно Игорь обещал передать secure_link на поддержку временных токенов, не знаю на какой стадии это - можно спросить.
 

fixxxer

К.О.
Партнер клуба
Ключ-валидатор в URL который проверяется на соответствие сессии клиента и имеет короткое время жизни.

Для nginx есть http://wiki.nginx.org/NginxHttpSecureDownload и не так давно Игорь обещал передать secure_link на поддержку временных токенов, не знаю на какой стадии это - можно спросить.
secure_link_md5 + secure_link_expires уже есть

http://permalink.gmane.org/gmane.comp.web.nginx.english/22320
 

Вурдалак

Продвинутый новичок
— чушь какая-то, разве нет? Во-первых, по ссылке, вроде как пример кривой (судя по всему, $secure_link_expires берётся с помощью регулярного выражения, но в паттерне это не отражено). Во-вторых, линк (вида http://example.com/p/hash==,12345678/p.jpg) потеряет актуальность только после смены некоего пароля, если судить по коду.

Если капнуть глубже, то я начинаю сомневаться в целесообразности закрытия доступа по прямому URL'у к статическому документу вообще, т.к., во-первых, с того момента как человек получил доступ к этому документу, он является обладателем копии данного документа в виде кеша (или самостоятельно сохранённой копии), т.е. закрытие доступа для него в общем-то уже ничего не даст; во-вторых, если человек, имеющий права на доступ к документу, кидает ссылку другому, то нет особого смысла последнему блокировать доступ, т.к. первый, как обладатель копии документа, имеет возможность передать ему эту копию. Единственное, что важно, конечно, это то, что адрес документа не должен быть легкоугадываемым.

Безопасности нихрена не придаёт. Единственное, так кому-то спокойнее.
 

zerkms

TDD infected
Команда форума
Вурдалак
Кстати, а хорошие доводы. В гуглодоксе есть вроде даже уровень доступа "для всех, у кого есть тайная ссылка на этот документ"
 

MiksIr

miksir@home:~$
Была фотография в открытом доступе, разошлась ссылкой по интернету, владелец решил закрыть доступ. Предлагать "удалить, перезакачать" - не катит, фашизм и программистская логика.
Кеш - не аргумент, только последний программист туда полезет, да и фото может уже вылететь из кеша.
Передача - возможно не аргумент, ага, если прямая передача от одного лица к дургому. Если "запостил ссылку не подумав" - вполне себе защита. Тот, у кого есть доступ к фото может и не осознавать, что стоят особые настройки приватности.
Наверно можно еще что-то придумать, но не в 5 утра же.
 

Вурдалак

Продвинутый новичок
Во-первых, что тебе мешает добавить действие «сменить адрес картинки»? Файл с картинкой просто переименуется — всё. Во-вторых, опять же, если ссылка разошлась по интернету, то всё, уже ничего владельца не спасёт: обязательно кто-то сохранит и выложит — первый раз в интернете что ли?

Кстати говоря, ссылки постят часто на страницу с фотографией, а не на саму фотографию. Запостил, не подумав, — ничего страшного не произойдёт.

Наверно можно еще что-то придумать, но не в 5 утра же.
— «можно что-нибудь ещё высосать из пальца, но не в 5 утра же». :)
 

zerkms

TDD infected
Команда форума
MiksIr
Смех смехом, а в гуглдокс такое есть.
 

MiksIr

miksir@home:~$
> Смех смехом, а в гуглдокс такое есть.
Ну как бэ разные задачи. Там наверно и другие настройки приватности есть

> MiksIr, у меня к тебе просьба говорить по делу.
А у меня просьба обойтись без просьб.
 

MiksIr

miksir@home:~$
Ой, ну начинается школьная лексика.
Есть требования на основе которых проектируется архитектура, есть пути решения. Если требования допускают прямую ссылку на фото - значит ничего не нужно делать, если не допускают - значит читаем этот топик.
 

Professor

Новичок
Я решил попробовать такой вариант. Какие плюсы(минусы) вы видите?

фотографии каждой галереи хранятся в папочках названных id этой галереей.
то есть примерно так
PHP:
/public/galery/10/kartinka.jpg
Собственно что бы увидеть эту картинку пользователь обязан быть на странице галереи, и ему необходимо присвоить $_SESSION["galeryID"]=10

В файле отдачи картинки проверяем
PHP:
$galeryID=(int)$_GET['galeryID'];
if($galeryID==$_SESSION["galeryID"])
{
//отдаем картинку, обязательно вставляя $galeryID в путь
}
$galeryID - передается вместе с путем к картинке, возможно в зашифрованном виде.

Как такой вариант?
 

AmdY

Пью пиво
Команда форума
и зачем здесь все распинались.
Professor
ты сразу избыточность залаживай в названия, ид. ид пользователя, ид галереи, ид картинки. тогда можешь любым способом делать, затем переделывай пока не покажется решение удовлетворительным.
 
Сверху