Cookieの「セキュア」フラグはどのように機能しますか?


101

secureフラグ付きのCookieが暗号化されていない接続を介して送信されないことを知っています。これはどのように詳細に機能するのでしょうか。

Cookieが送信されるかどうかを決定するのはだれですか?

回答:


91

クライアントはこれを暗号化された接続に対してのみ設定し、これはRFC 6265で定義されています

Secure属性は、Cookieのスコープを「セキュア」チャネルに限定します(「セキュア」はユーザーエージェントによって定義されます)。CookieにSecure属性がある場合、ユーザーエージェントは、要求が安全なチャネル(通常はHTTP over Transport Layer Security(TLS)[RFC2818])経由で送信される場合にのみ、HTTP要求にCookieを含めます。

Secure属性は、アクティブなネットワーク攻撃者からCookieを保護するのに役立つように見えますが、Cookieの機密性のみを保護します。アクティブなネットワーク攻撃者は、安全でないチャネルから安全なCookieを上書きして、整合性を破壊する可能性があります(詳細については、セクション8.6を参照)。


4
クライアント側にまだCookieがなく、サーバー側から送信する必要がある場合(ログインなど)、サーバー側がCookieを応答に含めるかどうかを決定しますか?
2012

2
サーバーは最初に「Set-Cookieヘッダー」を介してCookieを設定します
Ivan

49

この件に関するもう1つの言葉:

secureあなたのウェブサイトexample.comが完全にhttps なので省略は十分ではありません。

ユーザーが明示的にに到達している場合、ユーザーはにhttp://example.comリダイレクトされますhttps://example.comが、それではすでに遅すぎます。最初のリクエストにはcookieが含まれていました。


6
私はこれが古いことを知っていますが、HSTSプリロードはこの問題が頻繁に発生するのを防ぐことでこの状況を助けます。それでも100%の修正ではありませんが、安全なCookieを本当に避けたい場合に考慮すべきもう1つのことです。
MonoChrome氏2016年

5
@ Mr.MonoChrome安全なクッキーを避けたいのはなぜですか?
MEMark 2017

@ Mr.MonoChromeは一部の古いまたはより低いスペックのブラウザーを使用していると思いますが、HSTSもサポートしていません
oldboy

1
いい視点ね。.NETアプリケーションの場合、プログラムでリダイレクトするよりも(たとえば、globals.asax)IIS(またはweb.config)でリダイレクトする方が適切です
piris

したがって、httpからhttpsにリダイレクトせず、httpsでのみサービスを提供している場合は、必要ありませんsecureか?
ブラークは
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.