Я запустил образец приложения, которое использует Amazon S3 для размещения изображений. Мне удалось уговорить его работать. Приложение размещено по адресу github.com. Приложение позволяет создавать пользователей с фотографией профиля. Когда вы загружаете фотографию, веб-приложение хранит ее на Amazon S3 вместо локальной файловой системы. (Очень важно, если вы размещаете по адресу heroku.com)Как сделать изображения размещены на Amazon S3 менее публичными, но не полностью частными?
Однако, когда я сделал «источник просмотра» в браузере страницы, я заметил, что URL-адрес изображения был URL-адресом Amazon S3 в ведро S3, которое я присвоил приложение. Я вырезал &, вставил URL-адрес и смог просмотреть изображение в том же браузере и в другом браузере, в котором у меня не было открытых сеансов для моего веб-приложения или Amazon S3.
Есть ли способ ограничить доступ к этому URL (и изображению), чтобы он был доступен только для браузеров, которые вошли в мои приложения?
Большая часть информации, которую я нашел о ACL Amazon, говорит только о доступе только для владельцев или групп пользователей, прошедших аутентификацию с помощью Amazon или AmazonS3, или для всех анонимно.
EDIT ---- UPDATE 7 июля 2010
Amazon имеет более just announced способы ограничения доступа к объектам S3 и ведрами. Среди других способов теперь вы можете ограничить доступ к объекту S3, присвоив HTTP-рефереру. Это выглядит интересно ... Я не могу дождаться, пока они обновят свои документы разработчика.
@Justice - Спасибо за полный и очень аргументированный ответ. Это именно то, что мне нужно для использования S3. Активы, хранящиеся на S3, не являются сверхкритичными в отношении конфиденциальности, а URL-адреса доступны только для зарегистрированных пользователей. Полагаю, мне нужно сделать какой-то соленый хеш для генерации случайного числа. –
+1 для логических точек. Важное значение имеет также создание нового рандомизированного URL-адреса для каждого обновления ресурса. –