Загрузка на основе браузера Amazon S3 - предотвращение перезаписи - PullRequest
1 голос
/ 23 июля 2010

Мы используем Amazon S3 для изображений на нашем веб-сайте, и пользователи загружают изображения / файлы непосредственно на S3 через наш веб-сайт.В нашем файле политики мы гарантируем, что он «начинается с» «загрузить /».Любой может увидеть полные URL-адреса этих изображений, поскольку они являются общедоступными изображениями после их загрузки.Может ли хакер зайти и использовать данные политики в javascript и URL-адрес изображения, чтобы перезаписать эти изображения их данными?Я не вижу способа предотвратить перезапись после загрузки один раз.Единственное решение, которое я видел, - это скопировать / переименовать файл в папку, которая не является общедоступной для записи, но для этого требуется загрузить изображение, а затем снова загрузить его на S3 (поскольку Amazon не может переименовать его на месте)

Ответы [ 3 ]

1 голос
/ 06 октября 2013

Я думаю, что вопрос подразумевает, что контент напрямую передается на S3 из браузера с использованием файла политики, предоставленного сервером.Если для этого файла политики установлен срок действия, например, один день в будущем, то после этого политика становится недействительной.Кроме того, вы можете установить начальное условие для пути записи.

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

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

1 голос
/ 25 июля 2010

Если я вас правильно понял, изображения загружаются в хранилище Amazon S3 через ваше серверное приложение. Таким образом, разрешение на запись в Amazon S3 имеет только ваше приложение. Клиенты могут загружать изображения только через ваше приложение (которое будет хранить их на S3). Хакер может только заставить ваше приложение загрузить изображение с тем же именем и переписать оригинальное.

Как вы справляетесь с ситуацией, когда пользователь загружает изображение с именем, которое уже существует в вашем хранилище S3? Рассмотрим следующие действия:

  1. Первый пользователь загрузил изображение some-name.jpg
  2. Ваше приложение сохраняет это изображение в S3 под именем upload-some-name.jpg
  3. Второй пользователь загружает изображение some-name.jpg
  4. Будет ли ваше приложение перезаписывать исходное, хранящееся в S3?
0 голосов
/ 10 августа 2010

на самом деле S3 имеет функцию копирования, которая прекрасно работает

Копирование объектов Amazon S3

, но, как указано выше amra, удвоение пространства путем копирования звуковнеэффективныйВозможно, было бы лучше дать объекту какой-то уникальный идентификатор, такой как guid, и установить дополнительные метаданные пользователя, которые начинаются с «x-amz-meta-», для получения дополнительной информации об объекте, например, пользователь, который его загрузил, отображаемое имя,так далее...с другой стороны, вы всегда можете проверить, существует ли ключ, и запросить ошибку

...