Общий ключ для аутентификации загрузки файлов на отдельный сервер - PullRequest
0 голосов
/ 21 февраля 2019

В моем текущем проекте мне нужно иметь возможность загружать изображения и сохранять их в магазине, таком как S3, и выполнять некоторые операции (изменение размера и т. Д.) Перед сохранением изображений.Я все еще понимаю, как это должно быть сделано.

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

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

Если моя конечная точка на сервере изображений получает общий секрет для аутентификации и создания токена загрузки,этого достаточно для обеспечения безопасности?

Достаточно ли иметь оба сервера по протоколу https, чтобы гарантировать, что нет способа украсть секрет у человека, находящегося в середине атаки?

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

Спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

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

Пусть ваш главный сервер приложений создаст предварительно подписанный URL для загрузки S3.Отправьте этот предварительно подписанный URL-адрес клиенту.Клиент сможет загрузить на S3.После завершения загрузки выполните обработку в фоновом режиме с рабочим (выборка из S3-process-upload).

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

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

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

Если моя конечная точка на сервере изображений получает общий секрет для аутентификации и создания токена загрузки, достаточно ли этого для безопасности?

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

Достаточно ли иметь оба сервера по протоколу https, чтобы гарантировать, что нет способа украсть секрет у человека в центреатака?

HTTPS обеспечивает конфиденциальность, которой достаточно для предотвращения перехвата трафика вашим человеком в середине.Используя предварительно подписанные URL-адреса AWS, вы также не будете пересылать секрет, кроме так называемой подписи.Вот вступление к теме и Собственная документация Amazon для получения дополнительной информации.

...