Как на фотохостингах проверяется приватность фотки?

pilot911

Новичок
Как на фотохостингах проверяется приватность фотки?

Кто в курсе, как делать проверку с минимальной нагрузкой на сервер - конфиг сервера может быть любой, apache, nginx, php-fpm и тп
 

fixxxer

К.О.
Партнер клуба

pilot911

Новичок
Автор оригинала: fixxxer
приватность фотки мы не проверяем, мы о приватности уже знаем когда генерируем к ней урл.
и такие фотки лежат отдельно.
а проверяем что-нибудь простое, например http://sysoev.ru/nginx/docs/http/ngx_http_secure_link_module.html

(апач на нагруженном фотохостинге... ЛОЛ)
спасибо за подсказку, нашел ответ

В общем да, только немного хитрее (в отличие от «стандартного» метода проксирующе-кеширующего nginx)

Пользователь просит файл вида somehost.com/store/username/filename.ext
Nginx спрашивает у скрипта на апаче этот файлик.
Апач данные не отдает, являясь бекендом для nginx, выдает хидеры:
X-Accel-Redirect с реальным именем файла на дисковой полке (а там система путей-подпапок с разбивкой по символам id файла), откуда файл отдаст сам nginx как статику.
Либо если файл данному пользователю не доступен — скрипт на апаче выдаст нужный отбив 400-404-503, на который nginx ответит уже сам через перехват ошибок.

В итоге апач со скриптом отвечает только хидерами достаточно быстро.
В нашем случае никуда ничего не пишется.
Файлы лежат на дисковой полке, которая доступна машине с nginx (для nginx это локальные файлы)
Для пользователя удобные ссылки на файлы, конечно же не совпадающие с физическим путем к файлам.
У nginx просят файл, nginx лезет на апач бекенд по tcp на другую машину и спрашивает у его скрипта что-то типа: пользоватеь такой-то просит файл такой-то. Скрипт проверяет доступ пользователя к файлу (его устанавливает владелец файлика, права хранятся в базе), вычисляет физический путь к файлу в ФС полки. И отдает эту информацию на nginx. А уже тот отдает файл с себя, что он умеет делать быстро и не напряжно по ресурсам. Если бы отдавали апачем — на каждую отдачу висело бы по апачу с mod_php и тонной обвеса долго и печально.
Ничего нестандартного, такая же возможность есть в Apache (mod_sendfile) и в Лайти.
 

fixxxer

К.О.
Партнер клуба
X-A-R недостаточно быстрый для именно мегакрутого фотохостинга - там вообще нежелательно дергать backend для таких случаев. А так да, стандартный прием.
 

zerkms

TDD infected
Команда форума
А вообще на популярных фотохостингах проверяется ли это?
Тот же фейсбук по прямой ссылке (естественно) тупо отдаст пикчу, ибо cdn.
 

fixxxer

К.О.
Партнер клуба
>>Тот же фейсбук по прямой ссылке (естественно) тупо отдаст пикчу

ХА ХА ЛОХ :)
 

zerkms

TDD infected
Команда форума
fixxxer
для начала пусть существующие фотохостинги наберут хотя бы половину фейсбучного объёма и трафика ))
 

serglt

Анус, ой, Ахтунг
На фликре, к примеру, тоже прямые ссылки, никто с этим не парится.
Что тебе мешает делать имя файла - md5 хеш и склыдавать в папку пользователя(или еще куда, не столь важно), если она приватная не выводим ее на странице и дело с концом.
Отдельный запрос проверки доступа на каждую пикчу - очень накладно.
 

zerkms

TDD infected
Команда форума
serglt
просто люди почему-то думают, что усложнением жизни себе (а жизнь усложняется прежде всего девелоперам и сисадминам) - они как-то усложнят жизнь желающим раскрыть приватность.

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

и получается итого - потрачено N часов, закуплено +M серверов дополнительно (чтобы обслуживать хотя бы тот же трафик), а в итоге проблема не решена )))) ХА-ХА, как говорится :)
 

fixxxer

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


да что вы говорите

ссылку на AccessKeyModule выше смотри )
 

pilot911

Новичок
я думаю сделать так

в папке upload будут лежать прямые symlinks на файлы - это для открытого доступа

симлинк будет создаваться при первом обращении к файлу

в случае, если владелец изменит приватность файла - симлинк будет удален и запрос на файл отправится в специальный скрипт, который уже будет редиректить на файл через nginx, например
 

serglt

Анус, ой, Ахтунг
fixxxer
На скока я понял, там гет параметр идет как ключ. Тогда это тебе ничего не дает.
Не вижу особой разницы в img.jpg?key=1123qwewq1234 и 1123qwewq1234.jpg
Да, в твоем случае - конкретный ключ на айпишник. У меня для всех один.
Но если владелец фотки захочет показывать фотку только к примеру его друзьям на сайте, то тут твое хозяйство (как и мое) - бесполезно. Если я до выставления прав, скопировал линк на фотку, то я смогу просмотреть ее в обоих случаях.
 

fixxxer

К.О.
Партнер клуба
ты не понял. ссылка уникальная для каждого посетителя

ип, сид - сам решай, от чего хэш
 

pilot911

Новичок
Автор оригинала: fixxxer
ты не понял. ссылка уникальная для каждого посетителя

ип, сид - сам решай, от чего хэш
так все равно - где-то должна быть проверка и в этом случае - получается так
 

zerkms

TDD infected
Команда форума
fixxxer
смотри ситуация: ты у меня во френдах, т.е. доступ к просмотру у тебя по идее должен быть.
я хочу тебе дать ссылку на картинку. как быть?
 

fixxxer

К.О.
Партнер клуба
пригласить посмотреть картинку средствами соцсети ;)
 

serglt

Анус, ой, Ахтунг
fixxxer
Да все я так понял. Я же писал, что если генерить файл с хешем - то ключ секретный для всех один (один ключ - все пользователи). В твоем случае айпи (он же пользователь) имеет конкретный ключ. Понятно что можно передевать все что угодно.
Просто в такой реализации, я не могу разместить фотку со своего фотохостинга в своем любимом блоге. Что не есть гуд. А не знающий юзер (если у вас к примеру по айпи ключ) будет размещать фотки в блоге, и будет счастлив. Ему то они видны. Что не скажешь про других. ;)
По мне так, сгенерил файл, дал возможность выставлять доступ в соц. сети, и успокоился. Приватные фотки всегда приватными уже грузятся. А если ты их делаешь то публичным то приватными - никто не дает гарантии, что сосед ее не сохранит и выложит в паблик за тебя.
Ну и бонус с блогами само собой.
 

fixxxer

К.О.
Партнер клуба
Ээмм, а зачем одновременно закрывать приватность и размещать в своем блоге?
 

phprus

Moderator
Команда форума
fixxxer
А пути пользователей не исповедимы. В том-же вконтакте я много раз встречался с ситуацией, когда пользователи закрывают свои странички, но при этом все фотографии и прочее делают доступными, достаточно лишь зайти по прямой ссылке. Логикой данные действия тоже объяснить достаточно сложно.

А как вариант, может пользователь хочет такой бесплатный картиночный хостинг для своего блога получить, а показывать это-же пользователям соцсети не хочет.
 
Сверху