2016-10-14 17 views
1

AWS CloudFront APIとLambdaを使用してクラウドフロントクッキーを作成するアプリケーションがあります。残念ながら、標準のHTTPレスポンス形式を使用してCookieを設定することはできず、HTMLページからユーザーのブラウザにcookieを設定するためにdocument.cookieを使用する必要があります。クッキーには、コンテンツへのアクセスを許可するポリシー、クッキーの真正性を確認するための署名、およびキーペアIDが含まれています。ラムダのバックエンドスクリプトは、クッキーを作成してペイロードとしてリクエスタに送信します。ペイロードは、document.cookieに変数として渡されます。Javascript - security of document.cookie

私はcookie(HttpOnly、セッションCookie、安全なフラグなど)の保護について多くのことを読んでおり、document.cookieのセキュリティリスクを理解しようとしています。セキュリティのコンテキストで、Httpレスポンスとdocument.cookieを使用してCookieを設定することに違いがありますか? Cookieがクライアントサイドで作成され、ページが読み込み中であっても他のコンテンツにアクセスできるようにするため、悪意のあるユーザーがCookieに独自のポリシーを挿入することは可能でしょうか?ここで

は、参考のためにいくつかのコードです:

payload = data["Payload"] 
jsoned = JSON.parse(payload) 
cookie = jsoned['cookie'] 
redirectUrl = jsoned['redirectUrl'] 

document.cookie = 'CloudFront-Policy' + "=" + cookie['CloudFront-Policy'] + "; path=/mydirectory"; 
document.cookie = 'CloudFront-Key-Pair-Id' + "=" + cookie['CloudFront-Key-Pair-Id'] + "; path=/mydirectory" 
document.cookie = 'CloudFront-Signature' + "=" + cookie['CloudFront-Signature'] + "; path=/mydirectory" 

私の最初の時間はこれに掲示します。事前に助けてくれてありがとう。

-Ken

答えて

2

「直接」値の何事も、クッキー、期間内に保存されるべきではありません。

クッキーの値のすべての検証/処理は、サーバー側(機密情報に関する)で行われるべきであり、クッキーに含めるべき唯一のものは、ある種のguid(またはおそらくいくつかのguid)です。 Cookieに格納されている「側」のIDは、サーバ側で改ざんを検出することを防止するための方法でエンコードする必要があります。&

クライアントに提供された情報は、侵害されたものとみなされます。

+0

私はCloudFront Signatureがこのいたずら防止メカニズムを提供していると信じています。 – user3044005

+0

ありがとう!私はクッキーに保存されているものをもう一度見てみましょう。 – user3044005

3

セキュリティのコンテキストで、Httpレスポンスとdocument.cookieでCookieを設定することに違いはありますか?

実際はありません。 HTTP cookieはhttponlyで設定できますが、これはXSSに対する対策が非常に弱いだけで、実際には適切なセキュリティ手段ではありません。悪意のあるユーザーがクッキーの中に、自分の政策を挿入するためにクッキーがあり、クライアント側に

を作成しているよう

は、それは可能でしょうが、それはすでにHTTPクッキーのためでした。それらは両方ともクライアント側に格納されているため、信頼できないクライアントの手の届くところにあります。

これは署名のためのものです。正しく実装されている場合は、それが署名したコンテンツの改ざんを防止する必要があります。

+0

はい、署名は、Cookieに署名し、改ざんを防止するために使用されます。サーバーが改ざんされてアクセスが妨げられていることをサーバーが認識することは意味があります。 – user3044005

+0

助けてくれてありがとう。 – user3044005

関連する問題