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

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

Проблема будет если только галерея была открыта, а потом стала закрытой. тогда могут скачать картинки(теоретически).
 
Ну если это единственная проблема, то можно пережить.
Как минимум, менять ключ при смене прав доступа к галереи.
 
Ключ-валидатор в URL который проверяется на соответствие сессии клиента и имеет короткое время жизни.

Для nginx есть http://wiki.nginx.org/NginxHttpSecureDownload и не так давно Игорь обещал передать secure_link на поддержку временных токенов, не знаю на какой стадии это - можно спросить.
 
Ключ-валидатор в 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'у к статическому документу вообще, т.к., во-первых, с того момента как человек получил доступ к этому документу, он является обладателем копии данного документа в виде кеша (или самостоятельно сохранённой копии), т.е. закрытие доступа для него в общем-то уже ничего не даст; во-вторых, если человек, имеющий права на доступ к документу, кидает ссылку другому, то нет особого смысла последнему блокировать доступ, т.к. первый, как обладатель копии документа, имеет возможность передать ему эту копию. Единственное, что важно, конечно, это то, что адрес документа не должен быть легкоугадываемым.

Безопасности нихрена не придаёт. Единственное, так кому-то спокойнее.
 
Вурдалак
Кстати, а хорошие доводы. В гуглодоксе есть вроде даже уровень доступа "для всех, у кого есть тайная ссылка на этот документ"
 
Была фотография в открытом доступе, разошлась ссылкой по интернету, владелец решил закрыть доступ. Предлагать "удалить, перезакачать" - не катит, фашизм и программистская логика.
Кеш - не аргумент, только последний программист туда полезет, да и фото может уже вылететь из кеша.
Передача - возможно не аргумент, ага, если прямая передача от одного лица к дургому. Если "запостил ссылку не подумав" - вполне себе защита. Тот, у кого есть доступ к фото может и не осознавать, что стоят особые настройки приватности.
Наверно можно еще что-то придумать, но не в 5 утра же.
 
Во-первых, что тебе мешает добавить действие «сменить адрес картинки»? Файл с картинкой просто переименуется — всё. Во-вторых, опять же, если ссылка разошлась по интернету, то всё, уже ничего владельца не спасёт: обязательно кто-то сохранит и выложит — первый раз в интернете что ли?

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

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

> MiksIr, у меня к тебе просьба говорить по делу.
А у меня просьба обойтись без просьб.
 
Ой, ну начинается школьная лексика.
Есть требования на основе которых проектируется архитектура, есть пути решения. Если требования допускают прямую ссылку на фото - значит ничего не нужно делать, если не допускают - значит читаем этот топик.
 
Я решил попробовать такой вариант. Какие плюсы(минусы) вы видите?

фотографии каждой галереи хранятся в папочках названных id этой галереей.
то есть примерно так
PHP:
/public/galery/10/kartinka.jpg

Собственно что бы увидеть эту картинку пользователь обязан быть на странице галереи, и ему необходимо присвоить $_SESSION["galeryID"]=10

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

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