2016-09-29 1 views
0

私は、要求を行う前に、私はJavaScriptで秘密を設定する必要があり、AWSのJavascript SDKを使用してRailsアプリケーションを持っている:秘密鍵をjavascriptコードに渡して保護する方法はありますか?

AWS.config.update({ accessKeyId: '<%= ENV["AWS_ACCESS_KEY_ID"] %>', secretAccessKey: '<%= ENV["AWS_SECRET_ACCESS_KEY"] %>' }); 

問題は、誰もがそう、クロムコンソールを使用して、これらの秘密の値をチェックすることができますですこれらのキーを隠すにはどうすればいいのですか?

私はAJAXでそれらを取り出すことを考えていましたが、AJAX呼び出しから返されたデータもクライアントで表示できませんでしたか?か否か?

おかげ

あなたは離れて、クライアントから隠すことができ、クライアント側のJS値を持つことができる方法はありません
+1

あなたはできません。 – meagar

答えて

2

いいえ、クライアント側の秘密鍵を保護することはできません。あなたのコードがキーを必要とし、それを読むことができるならば、どのユーザもブラウザコンソールで同じロジックを実行することによってそれを読むことができます。

AWS SDKからどの機能を使用するのかは不明ですが、ファイルをアップロードする場合は、クライアントに秘密鍵は必要ありません。要求に署名する必要がありますが、それはクライアント側で発生する必要はありません。それはこのようなものだ:

  1. ユーザーが
  2. クライアントJSは、アクセスキーを使用して、サーバーからS3の署名を要求し、情報(名前、タイプ、など)をファイル、ファイル
  3. を選択
  4. サーバはS3を生成するための秘密鍵を使用しています署名とJSがS3リクエストに署名を添付して、AWS S3
  5. にファイルをポストクライアント
  6. クライアントに返します...
  7. 利益!
1

は、唯一の方法は次のようになり、クライアント側に示さのみ、サーバー側のデータと任意の秘密データを暗号化することです暗号化され、理解できない。トラフィックを暗号化する場合は、HTTPSプロトコルを使用することを検討してください。お役に立てれば。

+0

httpsは奇妙なクライアントではなく、盗聴から保護します。 –

+0

あなたはあなたの選択した暗号化アルゴリズムを使用してサーバー側で暗号化することでデータを保護することができ、暗号化されたデータは完全に無意味なので、最も安全なサイトでさえも "秘密"キー。 – MrMisery

+1

しかし、クライアント側で鍵を復号化して使用できる必要がありますか?ユーザーもそうすることができます。 –

関連する問題