-
Notifications
You must be signed in to change notification settings - Fork 4
/
28.txt
122 lines (84 loc) · 6.45 KB
/
28.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
[18] [[Cookie]] の [DFN[[CODE(HTTP)@en[[[HttpOnly]]]] [[属性]]]]は、当該[[クッキー]]が
[[JavaScript]] から取得できず、 [[HTTP]] でのみ送信されるべきであることを表します。
[33] [[XSS]] などの[[脆弱性]]で[[セッションID]]など重要な[[クッキー]]が盗まれる危険性を下げるため、
[[JavaScript]] からアクセスできない [CODE(HTTP)@en[[[HttpOnly]]]]
[[クッキー]]を用いることが極めて好ましいと考えられています。
* 仕様書
[REFS[
- [13] [CITE@en[RFC 6265 - HTTP State Management Mechanism]] ([TIME[2012-03-01 09:57:02 +09:00]] 版) <http://tools.ietf.org/html/rfc6265#page-9>
- [15] '''[CITE@en[RFC 6265 - HTTP State Management Mechanism]] ([TIME[2012-03-01 09:57:02 +09:00]] 版) <http://tools.ietf.org/html/rfc6265#section-4.1.2.6>'''
- [20] [CITE@en[RFC 6265 - HTTP State Management Mechanism]] ([TIME[2014-10-12 15:11:47 +09:00]] 版) <http://tools.ietf.org/html/rfc6265#section-5.2.6>
- [22] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-11-02 01:25:00 +09:00]] 版) <https://html.spec.whatwg.org/#dom-document-cookie>
- [25] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-03-15 01:40:28 +09:00]] 版) <https://html.spec.whatwg.org/#attr-meta-http-equiv-set-cookie>
- [27] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-03-15 01:40:28 +09:00]] 版) <https://html.spec.whatwg.org/#dom-websocket>
]REFS]
* 意味
[16] [CODE(HTTP)@en[[[HttpOnly]]]] [[属性]]は[[クッキー]]の適用範囲を [[HTTP]]
[[要求]]だけに限定します。 [SRC[>>15]]
[17] [CODE(HTTP)@en[[[HttpOnly]]]] [[属性]]のついた[[クッキー]]は「[RUBYB[非]@en[non-]] HTTP」 API
からはアクセスできません [SRC[>>15]]。 具体的には [CODE(JS)@en[[[document.cookie]]]]
[[属性]]からこれを取得することはできません。
;; [19] ここでいう「[[HTTP]]」には [[HTTPS]] や [[WebSocket]] も含まれています。
* 「非HTTP」API
[23] [CODE(JS)@en[[[document.cookie]]]] は「非HTTP」APIです [SRC[>>22]]。つまり
[CODE(HTTP)@en[[[HttpOnly]]]] [[クッキー]]は [CODE(JS)@en[[[document.cookie]]]]
で取得できません。
[26] [CODE(HTML)@en[[[<meta http-equiv=Set-Cookie>]]]] は「非HTTP」API です [SRC[>>25]]。
[29] [[HTTP]] [CODE(HTTP)@en[[[Set-Cookie:]]]] / [CODE(HTTP)@en[[[Cookie:]]]]
[[ヘッダー]]は、「非HTTP」APIでは''ありません''。
[28] [[WebSocket接続の確立]]時の [CODE(HTTP)@en[[[Cookie:]]]]
[[ヘッダー]]は、「非HTTP」API では''ありません'' [SRC[>>27]]。
[CODE(HTTP)@en[[[Set-Cookie:]]]] も同様と思われます。
* 構文
[FIG[
[FIGCAPTION[
[14] [[RFC 6265]] における [CODE(HTTP)@en[[[HttpOnly]]]] [[属性]]の構文
]FIGCAPTION]
[PRE(ABNF code)[
httponly-av = "HttpOnly"
]PRE]
]FIG]
* 処理モデル
[21] [[属性値]]はあっても無視されます [SRC[>>20]]。
;; [24] [CODE(HTTP)@en[[[Set-Cookie:]]]] も参照。
* 歴史
[9]
[CITE@en-us[Mitigating Cross-site Scripting With HTTP-only Cookies]] ([CODE[2007-01-18 14:03:44 +09:00]] 版) <http://msdn.microsoft.com/workshop/author/dhtml/httponly_cookies.asp>
[8]
[CITE[httpOnly cookie flag support in PHP 5.2 - iBlog - Ilia Alshanetsky]] ([CODE[2007-01-18 14:04:40 +09:00]] 版) <http://ilia.ws/archives/121-httpOnly-cookie-flag-support-in-PHP-5.2.html>
[7]
[CITE[Bug 178993 – MSIE-extension: HttpOnly cookie attribute for cross-site scripting vulnerability prevention]] ([CODE[2007-01-18 14:05:01 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=178993>
[6]
[CITE[robubu » Blog Archive » HttpOnly please]] ([TIME[2007-01-18 14:02:56 +09:00]] 版) <http://robubu.com/?p=15>
[2] [CITE[HTTPOnly Fix In MSXML ha.ckers.org web application security lab]] ([TIME[2008-11-21 17:47:39 +09:00]] 版) <http://ha.ckers.org/blog/20081111/httponly-fix-in-msxml/>
[3] [CITE[Bug 380418 – XMLHttpRequest allows reading HTTPOnly cookies]] ([TIME[2008-11-21 17:49:08 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>
[4] [CITE@en[(X)HTML5 Tracking]] ([TIME[2008-12-02 19:46:38 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=2516&to=2517>
[5] [CITE[Scope of HTTPOnly Cookies]] ([TIME[2008-12-15 19:00:11 +09:00]] 版) <http://docs.google.com/View?docid=dxxqgkd_0cvcqhsdw>
** ietf-httponly
[12] [CODE(HTTP)@en[[[HTTPOnly]]]] [[属性]]の標準化のために [DFN[[[ietf-httponly-wg]]]]
[[メイリング・リスト]]が2008年秋に作られました。名前に「[[IETF]]」
と入っていますが、正式な [[IETF]] の [[WG]] ではありませんでした。
その後すぐに [[Cookie]] 全体の標準化の機運が高まり、 [[http-state]]
[[IETF]] [[WG]] に合流しました。
[1] [CITE[ietf-httponly-wg | Google グループ]] ([TIME[2008-11-21 17:43:26 +09:00]] 版) <http://groups.google.com/group/ietf-httponly-wg?pli=1>
[CITE[This list has moved to IETF - ietf-httponly-wg | Google グループ]] ([TIME[2010-08-01 13:59:31 +09:00]] 版) <http://groups.google.com/group/ietf-httponly-wg/browse_thread/thread/59186b46f47371a1>
** HTML5 の旧規定
[10] [[HTML5]] は [CODE(JS)@en[[[document.cookie]]]] [[属性]]の規定のなかで、
「[[HTTPのみのクッキー]]」は返す値に含まないし、上書きすることもできないとしています。
ただし、注記 ([[参考]]) の中で、 [[HTML5]] 仕様書執筆時点で「[[HTTPのみのクッキー]]」
に関する仕様書は存在しておらず、何が「[[HTTPのみのクッキー]]」であるかは定義しない、
としています。その注記の中では一部 [[Webブラウザー]]で [CODE(HTTP)@en[[[httponly]]]] [[引数]]による
「[[HTTPのみのクッキー]]」の機能が実装されていることにも触れられています。
* メモ
[11] [CITE@en[mod_rewrite - Apache HTTP Server]]
([TIME[2009-10-04 03:10:27 +09:00]] 版)
<http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteRule>
[30] [CITE[Proposal for httpOnly cookies access via NPAPI]]
([TIME[2012-06-04 22:14:52 +09:00]] 版)
<https://mail.mozilla.org/pipermail/plugin-futures/2012-June/000525.html>
[31] [CITE[Proposal for httpOnly cookies access via NPAPI]]
([TIME[2012-06-04 22:51:09 +09:00]] 版)
<https://mail.mozilla.org/pipermail/plugin-futures/2012-June/000526.html>
[32] [CITE@en[NPAPI:HttpOnlyCookies - MozillaWiki]]
([TIME[2015-05-01 19:04:11 +09:00]] 版)
<https://wiki.mozilla.org/NPAPI:HttpOnlyCookies>