0

私は、AWS Cognito、Lambda、S3と12種類以上のサービスを持つサーバーレスのWebサイトを構築しています。ログインページのHTML/JSには、CognitoプールIDがあります。どれくらい安全ですか?私は機密情報を隠すことがベストプラクティスであることを知っています。しかし、これはクライアントサーバーではありません。そのすべてのクライアントが正直であれば。私はラムダコールを介して機密データにアクセスします。しかし、この呼び出しでも、ユーザーIDのような単純なテキスト入力が必要です。htmlにAWSコグニートプールIDを表示するのは安全ですか?

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.3.7.min.js"> </script> 
    <script> 
    AWS.config.region = 'XX-XXXX-1'; 
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'XX-XXXX-1:XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX' 
    }); 
    var lambda = new AWS.Lambda(); 
    </script> 

私は本当にpoolIDを表示したくありません。攻撃者はこれをコピーして、私のCognito IDを無理やり強制することができます。それを隠すための任意のアイデア?

答えて

2

IDプールIDを使用してクライアントを作成することは必須であり、クライアント側を維持することは非常に一般的です。それはそれ自身の主要なリスクではなく、そこにあるものはあなたの側で少し微妙に制限される可能性があります。

アイデンティティプールIDがCognitoが作成してプールにリンクするロールを介して公開されるリスクを軽減できます。これらを介して、認証されていない/認証されたユーザーに対してCognitoが生成する認証情報を絞り込むことができます。 This blog postには、これを行う方法の詳細があります。認証されたアイデンティティにログインするまで、認証されていないユーザーの権限を大幅に制限することで、これをさらに進めることができます。

0

私も同じ懸念を抱いていて、phpまたはnode.jsのいずれかを使用して、サーバー側(例:EC2)にCognitoプールIDとクライアントIDを保持するよう計画しています。私は、Amazonが心を変え、Cognito User Poolsのクライアント側のSDKサポートを含めていないことに気付きました。 Has anyone connected to a user pool from a lambda written in Node

これは今後のリリースに含まれることを望みます。

私は同じことがphpに当てはまると考えます。

代わりに、この1つとしてjavaScript obfuscatorの1つを使用することもできます。 javascriptObfuscator to to list hideキーまたはidsだけをページソースから見ます。

+0

Cognitoユーザープールは絶対にあなたがリンクされ、ポストによって意図されたものをコアのAndroid、iOS版、およびJavaScriptのSDKの外のSDK、でサポートされていたもののSDKが人生を作る追加のヘルパーを持っていたということでしたもう少し簡単ですが、他のSDKではそうではありません。ほとんどのSDKに含まれている直接APIを使用すると、モバイルSDKの便利な方法を使用せずにユーザープールに接続して使用できます。 このポスターには、Cognitoのユーザープールについての質問はありませんでしたが、CognitoのフェデレーションIDはありません。 –

0

プールや他のCognito IDをHTMLに置くことができます(許可されていないポリシーを慎重に定義している場合)が、APIゲートウェイ(Cognitoオーサライザ内蔵)を使用してコールを処理することができます他のバックエンドサービス(DynamoDBやS3など)とフロントエンドjsのサービスを直接使用するのではなく、それは、ここで説明しています:

https://aws.amazon.com/blogs/mobile/aws-mobile-app-backend-with-hybrid-apps/

関連する問題