Миша, ну с твоим-то опытом !.... Нельзя же проверять авторизацию бэкендом на каждый чих. Представь что в альбоме 150 фотографий. Они все (точнее их превьюшки) выводятся одновременно на одной странице. Отдача каждой превьюшки приведет к запросу к базе на проверку прав данного юзера на данную картинку. Так нельзя. И совсем не проверять тоже нельзя, это получится как вКонтакте - на превью все видно, а тык на фото - "защищено настройками приватности". Поэтому мы сделали так, что все фото в одном альбоме наследуют одинаковые права доступа от альбома. Это позволяет обойтись одним запросом, при условии что отдачу картинок будет делать nginx.
Илья, Максим, спасибо за наводку - ngx_http_secure_link_module и особенно NginxHttpSecureDownload выглядят многообещающе.