web-dev-qa-db-ja.com

Cookieの「セキュア」フラグ

Cookieの「セキュア」フラグは、Cookie自体を含める必要があるかどうかを判断するためにどのように機能しますか?

例えばHTTP(暗号化されていない)接続で...

  1. ユーザーはまだcookieを持っていないため、ログインを試みます。
  2. ユーザーは正常にログインし、サーバーは「安全な」Cookieをクライアントに送信する必要があります。

    • サーバーはHTTP経由でクライアントにCookieを送信しますか?
    • サーバーは、接続を確認し、「安全な」Cookieを含めることを決定する責任があるサーバーですか?
    • または、「セキュア」フラグの付いたCookieはHTTPレベルで拒否されますか?
7
ted

サーバーはブラウザにHTTP経由でセキュアフラグを設定してCookieを設定するように要求できますが、ブラウザはそれらをHTTPS経由の応答にのみ含める必要があります。

ただし、HTTPを介した認証リクエストに対して、HTTPを介した認証リクエストを直接送信しないでください。前者は改ざんされて資格情報が別の場所にコピーされる可能性がありますが、後者は盗聴される可能性があります。

HTTPとHTTPSを混合して一致させることは、安全なサイトにとっては良いレシピではありません。それらは明確に区切られている必要があります。

12
symcbean

browserは、セキュアなCookieがsent backのみであることを確認して、HTTPSリクエストのサーバーに送信します。 applicationは、ページがHTTPSで呼び出された場合にのみ、セキュアCookieがcreatedであることを確認する必要があります。

4
martinstoeckli

Cookieはクライアントに保存され、「条件が正しい」ときにサーバーに送信されます(特に、Cookieはサーバーに関連付けられ、そのサーバーに返送されますのみ)。 secureとマークされたCookieは、接続が「セキュア」(つまり、SSL、別名「HTTPS」)の場合にのみサーバーに送信されるCookieです。

Cookieの内容はサーバーの制御下にあります。ブラウザは、サーバーが保存するように指示したものだけをCookieに保存します。 Cookieの内容が機密である(機密である、または外部からの変更を許可しない、または両方を同時に許可してはならない)場合、Cookieを「安全」としてマークすることは意味があります。 Cookieの内容が機密情報である場合、プレーンなHTTP経由で送信しないでください。 Cookieがサーバーに送り返されたとき(「安全な」フラグとは、ブラウザに特定の失敗をコミットしないように指示すること)ではなく、Cookieが最初に作成されたときでもありません。

つまり、サーバーがプレーンHTTPを介して送信している場合、「セキュア」フラグを使用してクライアントに保存するためのCookieを送信し、何かが間違っています

さらに短い言葉で言えば、 サイト全体のHTTPS が必要です。 部分的HTTPSを正しく行うのは困難です(ある程度、数学的に不可能正しくすることは不可能です)。

2
Thomas Pornin