2016-12-18 4 views
0

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

Игровые серверы будут размещены на AWS EC2, а в качестве базы данных я планирую использовать DynamoDB с дополнительным кэшем Redis. Чтобы сохранить фотографии профиля, я хочу использовать S3.

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

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

Моя забота о загрузке. Существует только «friend system» в игре , а только ваши друзья могут видеть свое фото в профиле. Теперь я, хотя и несколько способов безопасного хранения этих изображений, чтобы обеспечить конфиденциальность моих пользователей.

  1. Сделайте что-нибудь с URL: Так основная идея в том, что я буду нам URL, который трудно угадать для нападающего. http://s3-aws-region.amazonaws.com/profilpictures/[userid+random 128bit] Но я не знаю, достаточно ли этого. Может быть, если есть более случайные бит?

  2. Зашифровать изображение: Просто зашифруйте изображение. Я бы использовал AES с 128-битным ключом, который отличается для каждого изображения и генерируется на пользовательском устройстве. Сервер будет хранить ключ и отдавать его только тем, кто имеет право. В качестве url я мог бы использовать http://s3-aws-region.amazonaws.com/profilpictures/userid, что заставляет вычислять url. Нижняя сторона: злоумышленник может вычислить URL-адрес и получить зашифрованную картинку. Это проблема?

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

Так что вы думаете об этих подходах? Есть ли что-нибудь, о чем я не думал?

ответ

Смежные вопросы