AWS Amplify - безопасность конфигурации - PullRequest
0 голосов
/ 17 мая 2019

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

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

Каков наилучший способ обработки этой конфигурации на клиенте, если выполняется только аутентификация 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', 
    }
});

1 Ответ

1 голос
/ 19 мая 2019

Вполне нормально иметь это в вашей конфигурации на стороне клиента. На самом деле это важно.

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...