/[pub]/suikawiki/sw4data/ids/2/569.txt
Suika

Contents of /suikawiki/sw4data/ids/2/569.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.17 - (hide annotations) (download)
Thu Sep 23 06:25:06 2010 UTC (14 years, 2 months ago) by wakaba
Branch: MAIN
Changes since 1.16: +15 -20 lines
File MIME type: text/plain
updated by (anon)

1 wakaba 1.1 [4]
2     [DFN[[RUBY[同一起源方針] [どういつきげんほうしん] [same origin policy]]]]は、
3     [[Web]] において、[[スクリプト]]が異なる[[起源]] (一般には[[ドメイン]])
4     に由来する[[物体]]に対してアクセスすることを制限する[[安全性]]に関する方針です。
5    
6     [5] 仕様書:
7     - [3]
8     [CITE@en-US-x-hixie[HTML 5]] ([CODE[2008-07-04 05:49:35 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#origin>
9    
10    
11     * 適用対象
12    
13     [9]
14    
15     @@ このリストは不完全です。
16    
17     -[20] [CODE(DOMa)@en[[[window]]]] や [CODE(DOMa)@en[[[document]]]] や
18     [CODE(DOMa)@en[[[location]]]]
19     の[[メンバー]] (一部例外を除きます。) に対する[[スクリプト]]からのアクセス
20     [SRC@en[[[HTML 5]]]]
21     --[26] ただし、[[Webブラウザ]]によっては、 [[HTML 5]] で例外とされている[[メンバー]]以外にも異なる[[起源]]の[[スクリプト]]からアクセスできてしまいます。
22     (例えば [[Gecko]] では [CODE(DOMa)@en[[[name]]]] や [CODE(DOMa)@en[[[status]]]] にアクセスできます。
23     [CODE(DOMa)@en[[[name]]]] の項を参照。)
24 wakaba 1.9 -[23] [[CSSOM]] へのアクセス [SRC[仕様なし]]
25     - [33] 外部資源へのアクセス
26     --[21] [CODE(DOMi)@en[[[XMLHttpRequest]]]] による[[外部資源]]へのアクセス
27 wakaba 1.1 [SRC@en[[[XMLHttpRequest]], [[XMLHttpRequest]] 2]]
28 wakaba 1.9 --[22] [[WebSocket]] による接続 [SRC@en[[[HTML 5]]]]
29     --[31] [CODE(DOMi)@en[[[Document]]]] [[オブジェクト]]の
30 wakaba 1.6 [CODE(DOMm)@en[[[load]]]] で読み込める [[URL]]
31 wakaba 1.7 ([[MSXML]]、[[Gecko]] など; [[DOM3LS]] [[CR]] にあったが同一起源方針に関する仕様はなし)
32 wakaba 1.9 -- [34] [[XSLT]] [CODE(XPathf)@en[[[document()]]]] [[関数]]による別[[起源]]の[[資源]]へのアクセス [SRC[仕様なし]]
33 wakaba 1.12 -[37] [CODE(DOMa)@en[[[mozIsLocallyAvailable]]]]
34 wakaba 1.1
35     [[#comment]]
36    
37    
38     * 適用対象外
39    
40     [10]
41     歴史的な理由により、次の場合には同一起源方針は適用されません。
42     - [CODE(HTMLa)@en[[[src]]]] [[属性]]、
43     [CODE(HTMLe)@en[[[object]]]] [[要素]]、
44     [CODE(HTMLe)@en[[[embed]]]] [[要素]]、
45     [CODE(HTMLe)@en[[[link]]]] [[要素]]などによる外部[[資源]]の埋め込み
46     -- [CODE(HTMLe)@en[[[img]]]] [[要素]]や [CODE(HTMLe)@en[[[iframe]]]]
47     [[要素]]など
48     -- [CODE(HTMLe)@en[[[script]]]] [[要素]]による外部[[スクリプト]]の参照も含みます。
49     これがそもそも設計上の意図的なものなのか、設計ミスなのかはわかりませんが、
50     [[JSONP]] などで同一起源方針を擦り抜けるテクニックとしてよく利用されています。
51     -- これらの[[要素]]や[[属性]]を使うと、本来[[スクリプト]]から取得できないべきである、
52     異なる[[起源]]の情報を取得することができてしまいます。前述のスクリプト実行だけでなく、
53     例えば、[[画像]]の大きさを取得することで、その内容を推測できてしまうかもしれません。
54     -- 外部[[スタイル・シート]]については、非同一起源でも読み込まれて文書に適用されますが、
55     [[スクリプト]]による [[CSSOM]] の参照に関しては同一起源方針の適用対象になります
56     (ただし各[[ブラウザ]]とも動作が怪しい)。
57     -- 外部 [[CSS]] [[スタイル・シート]]中の
58     [CODE(CSS)@en[[[expression]]()]]
59     - [[画像]]系 [[CSS]] [[特性]]による外部[[画像]]の埋め込み
60     - [CODE(CSS)@en[[[-moz-binding]]]] [[特性]]による外部 [[XBL 1.0]]
61     [[文書]]の読み込み
62     - [CODE(CSS)@en[@[[import]]]] による外部 [[CSS]] [[スタイル・シート]]の[[輸入]]
63     - [[Webフォント]]
64     -- 一部ブラウザ実装。今後の動向次第で変更される可能性あり。
65     -[18] [[Cookie]]
66     -- [CODE(HTTP)@en[[[Set-Cookie]]:]] [[頭欄]]内で発行対象の[[ドメイン]]を指定できます。
67 wakaba 1.17 -- [CODE(JS)@en[[[document.cookie]]]] を使っても書き込みできます。
68 wakaba 1.8 -[25] [CODE(DOMm)@en[[[postMessage]]]] [[メソッド]]を使うと、
69     異なる[[起源]]の [[Web頁]]に対して文字列を伝達できます。
70     -[32] [CODE(HTMLa)@en[[[marginwidth]]]] など[[フレーム]]内の[[余白]]を設定する[[属性]]を使うと、
71     [[フレーム集合文書]]とは異なる[[起源]]の[[フレーム]]内[[文書]]の[[余白]]を設定できます。
72     -- [[フレーム]]は [[CSS]] によるレンダリング・モデル以前に実装された歴史的経緯によります。
73 wakaba 1.13 - [38] [CODE(JS)@en[[[window.name]]]]
74     - [39] [CODE(HTMLa)@en[[[marginheight]]]], [CODE(HTMLa)@en[[[marginwidth]]]]
75 wakaba 1.8
76     [16] 要確認:
77     - [[XSLT]] [[スタイル・シート]]
78    
79     * [11] 制約の緩和
80 wakaba 1.1
81     - [15] [CODE(JS)@en[[[document]].[[domain]]]] [[DOM属性]]に値を設定することにより、
82     [[起源]]となる[[ドメイン名]]を変更することができます。
83     --ただし、新しい[[ドメイン名]]は元の[[ドメイン名]]の上位階層に当たるものでなければなりません。
84 wakaba 1.17 - [12] [[CORS]] により、''外部[[資源]]は''、異なる[[起源]]からのアクセスを許可することができます。
85     -- [13] [[Microsoft]] が提案し、 [[WinIE 8]] で実装している
86 wakaba 1.1 [CODE(DOMi)@en[[[XDomainRequest]]]] を用いると、
87     異なる[[ドメイン]]の[[資源]]にアクセスできます。
88     - [14] [[WinIE]] で実装されている[[セキュリティ・ゾーン]]の機能により、
89     [[イントラネット]]等[[ゾーン]]毎に、
90     [[同一起源方針]]を[[利用者]]の設定により緩和することができます。
91     -[17]
92     [[Adobe]] [[Air]] は異なる[[起源]]に対する [CODE(DOMi)@en[[[XMLHttpRequest]]]]
93     でのアクセスを可能にする [CODE(HTMLa)@en[[[allowcrossdomainxhr]]]]
94     [[属性]]を実装しています。
95     -[19] [CODE(DOMa)@en[[[globalStorage]]]]
96     --かつて [[HTML 5]] に含まれていました。
97     --現在は削除され、代わりに [CODE(DOMa)@en[[[localStorage]]]] が定義されていますが、
98     こちらは[[同一起源方針]]に完全に従っています。
99     -- [[Firefox]] 3 が実装しています。
100     -- [CODE(JS)@en[[[document]].[[domain]]]] [[DOM属性]]の設定と同じようなアクセス制約があります。
101    
102    
103    
104 wakaba 1.4 * 媒体
105    
106     [30] [CITE[Re: Same-origin checking for media elements]] ([[Ian Hickson <ian@...>]] 著, [TIME[2008-11-17 01:37:36 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/16571>
107    
108     * 労働者
109    
110     @@ ・・・
111    
112 wakaba 1.2 * 局所ファイル
113 wakaba 1.1
114 wakaba 1.2 [27] [[HTML5]] は[[局所ファイル]]に関しては[[相互運用性]]に関係しないため適用範囲外として規定していません。
115 wakaba 1.1
116 wakaba 1.2 [28] [CITE@ja[Chromeセキュリティモデル、IE/Firefox/Safari/Operaのいいとこ取り | エンタープライズ | マイコミジャーナル]] ([[Mainichi Communications Inc.]] 著, [TIME[2008-12-09 08:24:36 +09:00]] 版) <http://journal.mycom.co.jp/news/2008/12/08/031/>
117 wakaba 1.1
118 wakaba 1.3 [29] [CITE[Chromium Blog: Security in Depth: Local Web Pages]] ([TIME[2008-12-13 15:47:53 +09:00]] 版) <http://blog.chromium.org/2008/12/security-in-depth-local-web-pages.html>
119    
120 wakaba 1.1
121     * 歴史
122    
123     [6] 同一起源方針は、 [[Netscape Navigator]] 2.0 で [[JavaScript]]
124     と共に導入され [SRC[>>1、>>2]]、2.01 および 2.02 で不具合の修正がなされました
125     [SRC[>>1]]。
126    
127     [7] [[Internet Explorer]] をはじめとする他ブラウザも同様にこの制限を実装しましたが、
128     [[ECMAScript]] 仕様や [[DOM]] 仕様としての標準化の対象外とされ、
129     長らく明文化された規定が存在していませんでした。
130    
131     [8] [[HTML DOM]] に関係する部分はようやく2005年頃に [[WHATWG]]
132     によって [[HTML 5]] 仕様の一部として仕様の明文化が行われ始めました。
133     また、 [[XMLHttpRequest]] に関しては [[HTML 5]] 仕様を参照する形で規定されています。
134    
135     [[#comment]]
136    
137    
138     * メモ
139    
140     [2]
141     [CITE[JavaScript Security: Same Origin]] ([CODE[2008-06-18 04:13:16 +09:00]] 版) <http://www.mozilla.org/projects/security/components/same-origin.html>
142    
143     [1]
144 wakaba 1.10 [CITE@en[Same origin policy - Wikipedia, the free encyclopedia]] ([CODE[2008-07-02 01:06:45 +09:00]] 版) <http://en.wikipedia.org/wiki/Same_origin_policy>
145    
146 wakaba 1.11 [35] [CITE@en-us[Same origin policy for JavaScript - MDC]] ([TIME[2009-02-17 13:34:30 +09:00]] 版) <https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript>
147    
148     [36] [CITE[The Multi-Principal OS Construction of the Gazelle Web Browser - Microsoft Research]] ([TIME[2009-03-07 00:35:15 +09:00]] 版) <http://research.microsoft.com/apps/pubs/default.aspx?id=79655>
149    
150 wakaba 1.17 [[Webブラウザー]]の[[プロセス]]を[[起源]]毎に分離することによって[[保安性]]の向上を図る[[論文]]だそうです。
151    
152     [40] [CITE@en[(X)HTML5 Tracking]]
153     ([TIME[2009-09-30 00:11:40 +09:00]] 版)
154     <http://html5.org/tools/web-apps-tracker?from=4041&to=4042>
155    
156     [41] [CITE[IRC logs: freenode / #whatwg / 20100223]]
157     ([TIME[2010-02-25 09:03:01 +09:00]] 版)
158     <http://krijnhoetmer.nl/irc-logs/whatwg/20100223>
159    
160     [42] [CITE['''['''whatwg''']''' Canvas 2D Context Proposal: resetOriginClean]]
161     ([TIME[2010-04-25 01:54:34 +09:00]] 版)
162 wakaba 1.16 <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-April/026006.html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24