AWS Amplify — Безопасность конфигурации

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

Однако в некоторых статьях предполагается, что это не так, и я не нашел ничего ни на официальных сайтах AWS, ни на сайте amplify о том, что считается лучшей практикой в ​​этом отношении.

Каков наилучший способ обработки этой конфигурации на клиенте при выполнении аутентификации только JS (т.е. без участия серверной части)?

import Amplify from 'aws-amplify';

Amplify.configure({
    Auth: {
        // REQUIRED - Amazon Cognito Identity Pool ID
        identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab', 
        // REQUIRED - Amazon Cognito Region
        region: 'XX-XXXX-X', 
        // OPTIONAL - Amazon Cognito User Pool ID
        userPoolId: 'XX-XXXX-X_abcd1234',
        // OPTIONAL - Amazon Cognito Web Client ID
        userPoolWebClientId: 'XX-XXXX-X_abcd1234', 
    }
});
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
550
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Совершенно нормально иметь это в конфигурации на стороне клиента. На самом деле это необходимо.

В идентификаторах нет секретной информации, это просто ссылки. Это ничем не отличается от раскрытия ваших конечных точек API, это необходимо сделать.

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

Кроме того, ваши свойства на самом деле не изменяемы. Требуется только один раз раскрыть свойства (например, разработчик опубликует их или просто расскажет кому-то), и они будут безвозвратно потеряны. Попытка скрыть их — проигрышная игра.

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

AWS предоставляет ряд готовых функций безопасности, включая блокировку учетной записи при неправильном использовании пароля и блокировку вызовов с IP-адресов, которые совершают слишком много вызовов за короткий промежуток времени. Я считаю, что сервисы AWS также защищены от DDOS (см. CloudFront). Если кто-то завладеет вашим имуществом и попытается атаковать вас с помощью перебора учетных записей или DDOS, ему будет трудно добиться чего-либо.

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

Bat0u89 06.09.2020 23:12

Другие вопросы по теме