[1] [[Cookie]] の [DFN[[CODE(HTTP)@en[[[Secure]]]]]] [[属性]]は、 その[[クッキー]]が「[[安全]]」に扱われるべきことを示します。 * 仕様書 [REFS[ - [10] [CITE@en[RFC 6265 - HTTP State Management Mechanism]] ([TIME[2012-03-01 09:57:02 +09:00]] 版) - [12] '''[CITE@en[RFC 6265 - HTTP State Management Mechanism]] ([TIME[2012-03-01 09:57:02 +09:00]] 版) ''' ]REFS] * 意味 [13] [CODE(HTTP)@en[[[Secure]]]] [[属性]]は[[クッキー]]の適用範囲が「[RUBYB[[[安全]]]@en[secure]]」 な[RUBYB[[[通信路]]]@en[channel]]に制限されることを表します。ここでいう「[[安全]]」 は[[利用者エージェント]]により定義されます。 [SRC[>>12]] * 値 [2] この[[属性]]は値をとりません。 存在するかしないかで[[ブール値]]を表します。 [FIG[ [FIGCAPTION[ [11] [[RFC 6265]] における [CODE(HTTP)@en[[[Secure]]]] [[属性]]の構文 ]FIGCAPTION] [PRE(ABNF code)[ secure-av = "Secure" ]PRE] ]FIG] * 処理モデル [3] [[クッキー]]は [[HTTP]] [[応答]]で[[鯖]]に、[[DOM]] [[属性]] [CODE(JS)@en[[[document]].[[cookie]]]] で[[スクリプト]]に提供されます。 [14] [[HTTP]] に関しては、安全な通信路上を[[要求]]が送信される場合にのみ当該[[クッキー]]を含めることになっています。 具体的には [[TLS]] や [[SSL]] を使う ([[HTTPS]] の) 場合がこれに含まれ [SRC[>>4, >>12]]、 単体の [[HTTP]] を [[TCP]] 上で用いる場合は含まれません。 [15] [[DOM]] については、 [[HTTPS]] によって取得された[[文書]]が[[安全]]とみなされ、 単体の [[HTTP]] は[[安全]]ではないとみなされます。 [5] [CODE(HTTP)@en[[[Secure]]]] [[属性]]が設定されていな場合は、 そのような安全な[[通信路]]でなくても送信されます [SRC[>>4]] し、 安全な通信路を経ていない[[文書]]でも[[スクリプト]]からアクセスできます。 * 安全性 [16] [CODE(HTTP)@en[[[Secure]]]] [[属性]]は[[クッキー]]が[[安全]]な通信路から[[安全]]でない通信路へと漏れることを防ぐ上では有用です。 [[起源]]の定義には [[URL scheme]] も含まれているので、通常の方法では [[DOM]] 上でも [[HTTPS]] のページの[[スクリプト]]から [[HTTP]] のページの[[スクリプト]]へと直接 [CODE(HTTP)@en[[[Secure]]]] [[属性]]由来の値を引き渡すこともできません。 [17] しかし [CODE(HTTP)@en[[[Secure]]]] [[属性]]のついた[[クッキー]]を発行することは [[HTTPS]] でない [[HTTP]] からも可能です。従って攻撃者は[[安全]]でない[[通信路]]から[[クッキー]]を注入可能であり、 [[一貫性]]の観点では [CODE(HTTP)@en[[[Secure]]]] [[属性]]は意味をなしません [SRC[>>12]]。 * 歴史 ** Netscape Cookie [6] この[[属性]]は当初より [[Netscape Cookie]] で規定されていました。 [REFS[ - [4] [[Netscape Cookie]]: [CITE[Client Side State - HTTP Cookies]] ]REFS] ** IETF Cookie [7] [[IETF]] の [[RFC 2109]] [CSECTION@en[4.2.2 Set-Cookie2 Syntax]]、[[RFC 2965]] [CSECTION@en[3.2.2 Set-Cookie2 Syntax]] でも定義されていました。 [8] >>7 では「安全」な方法について明確には規定されていませんでした。両仕様によれば、 [[利用者エージェント]]が (場合によっては[[利用者]]に諮った上で) 決めて[['''構いません''']]し、設定されたときと同等以上に安全な方法で送出[['''するべき''']]ですが、 それ以上の具体的なケースには触れられていませんでした。 [9] この[[属性]]が省略された場合、安全でない方法で送信しても[['''構わない''']] [SRC[[[RFC 2109]] [CSECTION@en[4.3.1 Interpreting Set-Cookie]], [[RFC 2965]] [CSECTION@en[3.3.1 Interpreting Set-Cookie2]]]] とされていました。