同一オリジンポリシー

同一オリジンポリシー

 同一オリジンポリシー(Same Origin Policy)は、Webセキュリティにおいて重要な概念の一つであり、異なるオリジン(Origin)のWebページからの攻撃を防止するために用いられます。

オリジンとは、WebページのURLに含まれるスキーム、ホスト名、ポート番号の組み合わせを指します。同一オリジンポリシーは、異なるオリジン間の通信を制限することによって、悪意のあるWebページからの攻撃を防止します。

 例えば、WebページAから別のオリジンにあるWebページBに対してJavaScriptを用いてリクエストを送信した場合、同一オリジンポリシーによってブラウザはリクエストを拒否します。これによって、悪意のあるWebページがユーザーの個人情報を盗むなどの攻撃を行うことを防止できます。

 ただし、同一オリジンポリシーによって制限される通信は、必ずしも全ての場合において危険であるわけではありません。一方で、同一オリジンポリシーを回避する方法も存在します。例えば、JSONP(JSON with Padding)を用いることで、異なるオリジンからのデータを取得することができます。

 同一オリジンポリシーは、Webセキュリティにおいて非常に重要な役割を果たしています。Webアプリケーションを開発する際には、同一オリジンポリシーに注意して実装することが求められます。

同一オリジンポリシーによって、ブラウザは以下のようなリクエストを制限します。

  1. 異なるオリジンのドキュメントからのリソース読み込み 例えば、WebページAのJavaScriptコードからWebページBの画像を読み込むことはできません。
  2. 異なるオリジンのドキュメントへのリクエスト送信 例えば、WebページAのJavaScriptコードからWebページBのフォームにデータを送信することはできません。
  3. 異なるオリジンのドキュメントへのCookieの送信 例えば、WebページAのJavaScriptコードからWebページBにCookieを送信することはできません。
  4. 異なるオリジンのドキュメントへのDOMアクセス 例えば、WebページAのJavaScriptコードからWebページBのDOMを操作することはできません。

同一オリジンポリシーとみなされる例を以下に示します。

  1. 同じスキーム、ホスト名、ポート番号を持つWebページ同士 例えば、http://example.com/index.htmlとhttp://example.com/about.htmlは同一オリジンポリシーとみなされます。
  2. プロトコルが異なる場合でも、同じホスト名とポート番号を持つWebページ同士 例えば、http://example.com/index.htmlとhttps://example.com/about.htmlは同一オリジンポリシーとみなされます。

以下に、同一オリジンポリシーとみなされる例を示します。