同一生成元ポリシー(どういつせいせいげんポリシー、)とは、1995年Netscape社によってJavaScriptと同時にウェブブラウザに導入されたセキュリティ上の考え方で、コンテンツがブラウザに来る源泉(origin)に基づいて整理して、外部からの干渉を防ごうとする。

同一源泉ポリシー、同一オリジンポリシー、Sameオリジンポリシーとも表記される。 厳密には異なるがクロスドメイン、クロスサイトの制限と表記されることもある。

Origin判定ルール Originはオリジン、源泉とも表記され、以下の3つがすべて一致するとき同一のものとみなす。表題に反して、コンテンツは動的に生成されるとは限らない静的なコンテンツも対象となる。誤訳が定着してしまっている。。 ホスト(FQDN) スキーム ポート

例えば、次のものは同一のところから来たと扱われる。 http://example.com/ http://example.com:80/ http://example.com/path/file

次のものは、お互いに別のところから来たと扱われる。 http://example.com/ http://example.com:1234/ http://www.example.com/ https://example.com/ http://example.org/ http://wikipedia.org

同一でないoriginに対する制限とその回避策

異なる源泉から来たコンテンツについて、ブラウザ(正確にはユーザーエージェント)はセキュリティ上の干渉を阻止するため、さまざまな制限を行う。以下は一例である。 XMLHttpRequestによる取得の禁止 スクリプトによる別のoriginであるiframeやwindowに対する操作の制限(iframe.contentWindow、window.parent、window.open、window.openerなど) Canvasへの一部の操作の制限 この制限がない場合、例えばログインしないとみることのできない情報(Wikipediaのウォッチリストや、Webメールなど)のあるサイトにログインしているとき、ほかの生成元のサイトからそれを取得されるなどの危険が生じる。

画像やスクリプト、CSS、Flashなどのオブジェクトの埋め込みでは制限の内容に違いがあったり、制限されない場合がある。これを利用して、ほかの生成元と通信を行う代表的な手段がJSONPである。 セキュリティ上のリスクを理解したうえであれば、HTTPヘッダーでの指定やdocument.domainの変更などの特定の方法で許可をすることによって制限を緩和することができる。クロスオリジンリソース共有(CORS)と呼ばれ、一部の仕様はHTML5によって定められており、古いブラウザは非対応の場合もある。

また、このポリシーはブラウザの実装によってデータURIスキームの扱いなどに差異がある。

関連項目

ネットワーク・セキュリティ JSONP XMLHttpRequest クロスオリジンリソース共有(CORS) - 同一生成元ポリシーを安全に回避するための仕組み

脚注

参考文献 RFC 6454 — The Web Origin Concept 日本語訳

同一生成元ポリシー - MDN

外部リンク

RFC 6454 — The Web Origin Concept 日本語訳 HTML Standard 7.5 Origin HTML Standard 7.5 生成元(非公式な日本語訳) URL Standard 4.7. Origin URL Standard 4.7. 生成元(非公式な日本語訳)