/
539.txt
342 lines (254 loc) · 16.3 KB
/
539.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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
[46] 本稿では [[CORS]] 以前の古い提案にあった [CODE(XML)@en[[[<?access-control?>]]]]
[[処理指令]]、 [CODE(HTTP)@en[[[Access-Control:]]]] [[頭欄]]について説明しています。
[47] 最終的に [[Webブラウザー]]に実装された技術については [[CORS]]
の項をご覧ください。
* [CODE(XML)[access-control]] 処理指令 (XML)
[2] [[XML]] [[文書]]で [DFN[[CODE(XML)[access-control]] [[処理指令]]]]を使うと、
外部からその[[文書]]の内容を処理しようとするのを認めるかどうか指定できます。
[3] 例えば、 [SAMP[example.net]] の[[文書]] [VAR[A]] は[[スクリプト]]で
[SAMP[example.com]] の[[文書]] [VAR[B]]
を読み込んで処理するように設計されているとします。しかし、
[[文書]] [VAR[A]] を読込む
[[Webブラウザ]]は[[安全]]上の理由でこのような[[ドメイン]]を超えた操作を認めていないかもしれません。
そこで、 [CODE(XML)[access-control]] [[処理指令]]で
[SAMP[example.net]] を認めると[[文書]] [VAR[B]] に記述すると、
[WEAK[([[Webブラウザ]]が対応していれば)]]
[[文書]] [VAR[A]] の[[スクリプト]]は[[文書]] [VAR[B]]
を処理できます。
[[#comment]]
** 仕様書
[1]
[AC]
[CITE[Authorizing Read Access to XML Content Using the <?access-control?> Processing Instruction 1.0]] <http://www.w3.org/TR/2005/NOTE-access-control-20050613/>
[[VoiceXML 2.1]] の附属書から分離されましたよ。
一応完成で改訂の予定無しだそうです。
[[RFC 2732]] 参照してるよ[AA[orz]]
([[名無しさん]] [WEAK[2005-06-13 23:12:28 +00:00]])
[18]
[CITE[Authorizing Read Access to XML Content Using the <?access-control?> Processing Instruction 1.0]] <http://www.w3.org/TR/2006/WD-access-control-20060517/>
([[名無しさん]] [WEAK[2006-05-18 22:05:46 +00:00]])
[19]
[CITE[2006/waf/access-control/]] ([CODE[2007-02-02 22:10:19 +09:00]] 版) <http://dev.w3.org/cvsweb/2006/waf/access-control/>
([[名無しさん]] [WEAK[2007-02-02 13:20:28 +00:00]])
[20]
[CITE@en-US[Enabling Read Access for Web Resources]] ([CODE[2007-02-16 03:36:23 +09:00]] 版) <http://www.w3.org/TR/2007/WD-access-control-20070215/>
([[名無しさん]] [WEAK[2007-02-17 03:28:18 +00:00]])
[21]
[CITE@en-US[Enabling Read Access for Web Resources]] ([CODE[2007-06-18 22:59:12 +09:00]] 版) <http://www.w3.org/TR/2007/WD-access-control-20070618/>
([[名無しさん]] [WEAK[2007-06-21 04:59:43 +00:00]])
[22]
[CITE@en-US[Enabling Read Access for Web Resources]] ([CODE[2007-10-02 00:23:22 +09:00]] 版) <http://www.w3.org/TR/2007/WD-access-control-20071001/>
([[名無しさん]])
[23]
[CITE@en-US[Access Control for Cross-site Requests]] ([CODE[2007-11-26 22:31:03 +09:00]] 版) <http://www.w3.org/TR/2007/WD-access-control-20071126/>
([[名無しさん]])
[27]
[CITE@en-US[Access Control for Cross-site Requests]] ([CODE[2008-02-14 07:35:35 +09:00]] 版) <http://www.w3.org/TR/2008/WD-access-control-20080214/>
([[名無しさん]])
[28]
これ、しばらく見ないうちにどうなってしまったんだ・・・。内容が全然別物になってる件。
別に前のがよかったとはいわないけど、今のでよくなっているのか??
([[名無しさん]] [WEAK[2008-08-01 13:46:26 +00:00]])
[29]
[CITE@en-US[Access Control for Cross-Site Requests]] ([CODE[2008-09-09 23:54:06 +09:00]] 版) <http://www.w3.org/TR/2008/WD-access-control-20080912/>
([[名無しさん]])
[[#comment]]
** 構文
[3] [SRC[AC 2]]
:[CODE(infoprop)[[[対象]]]]:[CODE(XML)[access-control]]
:[CODE(infoprop)[[[内容]]]]:- [CODE(ABNF)[[DFN[content]] := [(allow / deny / allow [[S]] deny) '''['''[[S]]''']'''] [SPAN(comment)[;; [1] ]]]]
- [CODE(ABNF)[[DFN[allow]] := 'allow=' (<"> access-list <"> / "'" access-list "'") [SPAN(comment)[;; [1] ]]]]
- [CODE(ABNF)[[DFN[deny]] := 'deny=' (<"> access-list <"> / "'" access-list "'") [SPAN(comment)[;; [1] ]]]]
- [CODE(ABNF)[[DFN[access-list]] := access-item *([[S]] access-item) / "*" [SPAN(comment)[;; [2] ]]]]
- [CODE(ABNF)[[DFN[access-item]] := host-name / partial-host-name / [[IPv4address]] / [[IPv6address]] [SPAN(comment)[;; [3] ]]]]
- [CODE(ABNF)[[DFN[partial-host-name]] := "*." host-name [SPAN(comment)[;; [4] ]]]]
[CODE(ABNF)[host-name]] は仕様 [SRC[AC 2]]
によれば [[RFC 2732]] のものですが、
[[RFC 2732]] は [[RFC 2396]] を参照しています。
[CODE(ABNF)[[[IPv4address]]]] と [CODE(ABNF)[[[IPv6address]]]]
も仕様 [SRC[AC 2]] によれば [[RFC 2732]] のものですが、
[[RFC 2373]] が参照されています。
[4]
[CODE(XML)[access-control]] [[処理指令]]を記述する場所については特に規定がありません。
[[文書]]中のどこでもよいということでしょうか。
[5]
[CODE(XML)[access-control]] [[処理指令]]は1つの[[文書]]中に何個でも記述できます
[SRC[AC 2]]。
[[#comment]]
** 一致の判定
[6] [SRC[AC 2]]
- [CODE(XML)[access-control]] [[処理指令]]がある場合、
-- 複数 [CODE(XML)[access-control]] [[処理指令]]があれば、
結合して考えます。
== [[IP番地]]が [CODE(XML)[deny]] [[属性]]の値に一致すれば、
[[アクセス]]は拒否し、検索は終了します。
== [[IP番地]]が [CODE(XML)[allow]] [[属性]]の値に一致すれば、
[[アクセス]]を認め、検索は終了します。
== [[完全修飾ドメイン名]]が [CODE(XML)[deny]]
[[属性]]の値に正確に一致すれば、[[アクセス]]は拒否し、検索は終了します。
== [[完全修飾ドメイン名]]が [CODE(XML)[allow]]
[[属性]]の値に正確に一致すれば、[[アクセス]]を認め、検索は終了します。
== [[ドメイン名]]の[[ワイルドカード]]を使った最良一致を探します。
--- [DFN[最良一致]]とは、[[ワイルドカード]]を使った一番近い一致です。
例えば、 [SAMP[bert.evil.example.com]] は [SAMP[*.example.com]]
よりも [SAMP[*.evil.example.com]] に近いとします。
--- 最良一致が [CODE(XML)[deny]] [[属性]]で見つかれば、
[[アクセス]]は拒否し、検索は終了します。
--- 最良一致が [CODE(XML)[allow]] [[属性]]で見つかれば、
[[アクセス]]を認め、検索は終了します。
== [[アクセス]]は拒否し、検索を終了します。
- [CODE(XML)[access-control]] [[処理指令]]が無い場合、
[[利用者エージェント]]の判断によります。
[8] >>5 の[[算法]]では、 [CODE(XML)[access-control]]
[[処理指令]]が含まれる[[文書]]自体が置かれている場所が関与していないことに注意して下さい。
[SAMP[a.example.net]] に置かれている文書で [CODE(XML)[access-control]]
する時で、 [SAMP[a.example.net]] の他の文書からの[[アクセス]]を認めたいなら、
[SAMP[a.example.net]] が認められるような指定も明記しなければなりません。
[[#comment]]
** 安全性
[12] [[利用者エージェント]]は安全への配慮から普通他のドメインにある[[文書]]を直接扱えないようにしています。
[CODE(XML)[access-control]] [[処理指令]]は便利さのためにこの制限を緩和しますが、
当然その分安全性は低くなります。
[13] [[利用者エージェント]]の安全の制限はドメイン名等によって[[利用者]]が制御できるようにされていることが少なくありませんが、
>>6 の算法をそのまま適用すると、 [CODE(XML)[access-control]]
[[処理指令]]が存在する場合に[[利用者]]の意思を反映させられなくなります。
[[CSS]] の [CODE(CSS)[![[import]]]] のように
[CODE(XML)[access-control]] よりも強い制御を[[利用者]]が指定できた方が便利かもしれません。
[14]
異なるドメインの文書の処理の制限は、 [WEAK[([[利用者]]にとっての)]]
[[第三者]]に意図しないうちに情報が送られてしまうことを防ぐ意味もあります。
例えば [SAMP[example.net]] の[[文書]] [VAR[A]]
から [SAMP[example.com]] の[[文書]] [VAR[B]] を
[WEAK[([SAMP[example.com]] [[鯖]]側で処理される)]] [[引数]] [VAR[q]]
をつけて呼び出すように記述されているとしますと、
[[利用者]]は気づかないうちに[[引数]] [VAR[q]]
という情報を第三者に渡してしまうのです。
外部のドメインたる [SAMP[example.com]]
の[[文書]] [VAR[B]] の取得の試み自体を安全制限違反で弾いてしまうのであれば、
[[引数]] [VAR[q]] が渡されることはありません。しかし
[CODE(XML)[access-control]] [[処理指令]]を読むためには[[文書]]
[VAR[B]] を読まなければなりませんから、その時点で[[引数]] [VAR[q]]
が渡されてしまうのです。
[[#comment]]
** 例
[7] [[FQDN]] を2つ指定した例 [SRC[AC 2 改]]
[PRE(XML example code)[
<?access-control allow="voice.roadrunner.example voice.acme.example"?>
]PRE]
この例の場合、 [SAMP[voice.roadrunner.example]] や
[SAMP[voice.acme.example]] は認められますが、
それ以外はすべて認められません。
[9] ワイルドカードを使った例 [SRC[AC 2]]
[PRE(XML example code)[
<?access-control allow="*.roadrunner.example *.acme.example"?>
]PRE]
[SAMP[voice.roadrunner.example]] や
[SAMP[voice.acme.example]] はこの例でもやはり認められますが、
それだけではなく、 [SAMP[image.roadrunner.example]] や
[SAMP[www.acme.example]] も認められます。
しかし [SAMP[acme.example]] は認められません。
[10] すべて認める例 [SRC[AC 2]]
[PRE(XML example code)[
<?access-control allow="*"?>
]PRE]
あらゆるホストが認められます。
[11] 一部だけ認めない例 [SRC[AC 2]]
[PRE(XML example code)[
<?access-control allow="*.example.com" deny="*.visitors.example.com"?>
]PRE]
[SAMP[www.example.com]] は認められますが、
[SAMP[www.visitors.example.com]] は認められません。
なお、構文 >>3 により [CODE(XML)[deny]] [[属性]]は
[CODE(XML)[allow]] [[属性]]の後に書かなければなりません。
算法 >>6 により、 [CODE(XML)[deny]] [[属性]]が
[CODE(XML)[allow]] 属性より優先されます。
[[#comment]]
** メモ
[15]
[CITE[RE: Comments on "Authorizing Read Access to XML Content Using the <?access-control?> Processing Instruction 1.0" from Ian Hickson on 2005-12-06 (public-appformats@w3.org from December 2005)]] <http://lists.w3.org/Archives/Public/public-appformats/2005Dec/0002.html>
[[Ian Hickson]] による問題点の指摘。
([[名無しさん]] [WEAK[2005-12-24 03:24:17 +00:00]])
[16]
元々開発していた [[Voice Browser WG]] は、
out of scope なので[[勧告]]まで進めないと決めました。
しかし、 [[Ajax]] などでも有用なので、引き取り先の [[WG]]
を探していました。 Web 応用系2[[WG]] のどちらかがよいのですが、
どちらも (例によって) 作業が遅れまくりなので、
やりたいけど大変だ〜なんて話してましたw どうなるのでしょうw
([[名無しさん]] [WEAK[2005-12-24 03:30:10 +00:00]])
[24]
[CITE@en-US[Access Control for Cross-site Requests]] ([CODE[2008-01-16 15:39:42 +09:00]] 版) <http://dev.w3.org/cvsweb/~checkout~/2006/waf/access-control/Overview-Declarative.html?content-type=text/html;%20charset=iso-8859-1>
([[名無しさん]])
[25]
[CITE@en-US[Access Control for Cross-site Requests: Proposed Restructuring]] ([CODE[2008-01-17 04:52:01 +09:00]] 版) <http://dev.w3.org/cvsweb/~checkout~/2006/waf/access-control/Overview-Declarative-20080116.html?content-type=text/html;%20charset=iso-8859-1>
([[名無しさん]])
[26]
[CITE@EN['''['''Editorial Draft''']''' Access Control for Cross-site Requests Requirements]] ([CODE[2008-01-16 08:08:53 +09:00]] 版) <http://dev.w3.org/cvsweb/~checkout~/2006/waf/access-control/AccessControl-Requirements?content-type=text/html>
([[名無しさん]])
[30]
[CITE@en['''['''access-control''']''' Update]] ([[Anne van Kesteren]] 著, [TIME[2008-07-09 04:31:40 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-webapps/2008JulSep/0033.html>
([[名無しさん]])
[[#comment]]
* メモ
[17]
[CITE[XML:DB Initiative: Projects]] <http://xmldb-org.sourceforge.net/projects.html>
[31] [CITE@en[IEBlog : Completing Access Control support for XDomainRequest]] ([TIME[2009-01-20 21:24:10 +09:00]] 版) <http://blogs.msdn.com/ie/archive/2009/01/14/completing-access-control-support-for-xdomainrequest.aspx>
[32] [CITE[IRC logs: freenode / #whatwg / 20090210]] ([TIME[2009-02-12 07:13:29 +09:00]] 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20090210#l-210>
>
- [10:44] <annevk5> CORS is done, apart from non-normative details and server requirements and potential feedback from implementors
- [10:44] <Hixie> cool
- [10:45] <hsivonen> annevk5: so CORS will use Origin regardless of how the more general ID goes?
- [10:45] <annevk5> hsivonen, there are three known implementations of CORS that use Origin and will ship soonish
- [10:45] <annevk5> hsivonen, of which one at least has indicated it cannot be possibly changed
- [10:45] <hsivonen> annevk5: ok.
- [10:45] <annevk5> hsivonen, not counting Chrome here
- [10:46] <annevk5> hsivonen, so I guess that although I appreciate the discussion on the HTTP WG mailing list, it's pretty much a done deal
- [10:48] <Hixie> someone should tell the http group
- [10:48] <Hixie> (not it!)
- [10:48] <annevk5> "not it!"?
- [10:49] <annevk5> I'm not sure they care much for reality, but I suppose I can give it try if the discussion surfaces again
- [10:51] <Hixie> "not it" is an idiomatic english expression meaning "i decline to volunteer for the responsibility that has most recently been put on the table"
- [10:51] <annevk5> heh
[33] [CITE@en-US[Cross-Origin Resource Sharing]] ([TIME[2009-03-17 23:52:29 +09:00]] 版) <http://www.w3.org/TR/2009/WD-cors-20090317/>
[34] [CITE[IRC logs: freenode / #whatwg / 20091208]]
([TIME[2010-01-04 05:56:44 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20091208>
[35] [CITE[IRC logs: freenode / #whatwg / 20091222]]
([TIME[2010-01-05 22:53:47 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20091222>
[36] [CITE[IRC logs: freenode / #whatwg / 20100409]]
([TIME[2010-04-22 01:12:18 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100409#l-374>
[37] [CITE[IRC logs: freenode / #whatwg / 20100419]]
([TIME[2010-05-04 11:15:57 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100419>
[38] [CITE[IRC logs: freenode / #whatwg / 20100426]]
([TIME[2010-05-14 07:58:24 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100426>
[39] [CITE@en[About using CORS (was: Re: WebFonts WG Kick-off)]]
([[Anne van Kesteren]] 著, [TIME[2010-04-26 16:16:25 +09:00]] 版)
<http://lists.w3.org/Archives/Public/public-webfonts-wg/2010Apr/0040.html>
[40] [CITE[IRC logs: freenode / #whatwg / 20100513]]
([TIME[2010-06-07 08:30:12 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100513>
[41] [CITE@en['''['''cors''']''' Simplify CORS Headers (ISSUE-89)]]
([[Anne van Kesteren]] 著, [TIME[2010-05-07 09:30:10 +09:00]] 版)
<http://lists.w3.org/Archives/Public/public-webapps/2010AprJun/0508.html>
[42] [CITE[IRC logs: freenode / #whatwg / 20100702]]
([TIME[2010-07-18 00:28:05 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100702>
[43] [CITE@en-US[Cross-Origin Resource Sharing]]
([TIME[2010-07-27 23:13:45 +09:00]] 版)
<http://www.w3.org/TR/2010/WD-cors-20100727/>
[44] [CITE[IRC logs: freenode / #whatwg / 20100803]]
([TIME[2010-08-11 00:19:06 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100803#l-508>
[45] [CITE@en[cross origin resource sharing (cors) on iphone (xmlhttprequest) - WebDeveloper.com]]
( ([TIME[2010-09-23 13:07:39 +09:00]] 版))
<http://www.webdeveloper.com/forum/showthread.php?t=230494>
[48] <https://github.com/whatwg/fetch/commit/05a8acd40d6f65c1a6dc830896cd8366a99d267d>
[50] [[IANA登録簿]]には [[WebApps WG]] を出典に [[Provisional]]、状態「[[非推奨]]」
で [CODE(HTTP)@en[[[Access-Control:]]]] [[HTTPヘッダー]]が登録されています [SRC[>>49]]。
[REFS[
- [49] ([TIME[2011-07-16 05:29:36 +09:00]] 版) <http://www.iana.org/assignments/message-headers/prov/access-control>
]REFS]