#react-native #amazon-s3 #encryption #aws-amplify
#react-native #amazon-s3 #шифрование #aws-amplify
Вопрос:
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / КОД:
Я использую react native
with Amplify
library для загрузки изображений из моего мобильного приложения в корзину Amazon AWS S3. Я использую следующий код строки:
Storage.put(newFile.name, newFile, {
level: 'private'});
Я могу успешно загрузить файл.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Я включил шифрование по умолчанию для объектов S3 в моем корзине. То есть всякий раз, когда объект попадает в корзину, он шифруется с использованием шифрования по умолчанию перед сохранением на диске S3.
https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html
Операция загрузки (во время вызова Storage.put()) выполняется в 2 этапа:
Шаг 1. Файл, который я отправляю из своего мобильного приложения react native, отправляется в корзину Amazon S3 в незашифрованном виде.
Шаг 2. Этот незашифрованный файл, когда он попадает в корзину S3, затем шифруется и сохраняется на диске в S3.
МОЯ ПРОБЛЕМА:
Я хочу включить шифрование при передаче. То есть я хочу шифрование на самом шаге 1.
В принципе, мне не нужно шифрование на стороне сервера. Я хочу шифрование на стороне клиента.
ЧТО Я ИССЛЕДОВАЛ:
Даже в документе amplify показан пример, описанный на шаге 1 и шаге 2. Это не то, чего я хочу. https://docs.amplify.aws/lib/storage/upload/q/platform/js/#encrypted-uploads
Пример, приведенный в приведенном выше документе amplify, будет делать то же самое — файл будет отправлен в незашифрованном виде на S3, а затем, когда он попадет в корзину, он будет зашифрован и сохранен. Это не то, чего я хочу.
Комментарии:
1. Дайте мне знать, если я что-то неправильно понял.
2. Я думаю, что он обычно шифруется при отправке, потому что Storage.put использует post-запрос https (с graphql) для загрузки файла.
3. Согласен с @Engam выше. Что заставляет вас думать, что оно не зашифровано при отправке?
4. Если вы спросите
encrypt in transit
, обычно ответом является — используйте https. При использовании https трафик шифруется.