同一オリジンポリシー
同一オリジンポリシー
同一オリジンポリシー(Same Origin Policy)は、Webセキュリティにおいて重要な概念の一つであり、異なるオリジン(Origin)のWebページからの攻撃を防止するために用いられます。
オリジンとは、WebページのURLに含まれるスキーム、ホスト名、ポート番号の組み合わせを指します。同一オリジンポリシーは、異なるオリジン間の通信を制限することによって、悪意のあるWebページからの攻撃を防止します。
例えば、WebページAから別のオリジンにあるWebページBに対してJavaScriptを用いてリクエストを送信した場合、同一オリジンポリシーによってブラウザはリクエストを拒否します。これによって、悪意のあるWebページがユーザーの個人情報を盗むなどの攻撃を行うことを防止できます。
ただし、同一オリジンポリシーによって制限される通信は、必ずしも全ての場合において危険であるわけではありません。一方で、同一オリジンポリシーを回避する方法も存在します。例えば、JSONP(JSON with Padding)を用いることで、異なるオリジンからのデータを取得することができます。
同一オリジンポリシーは、Webセキュリティにおいて非常に重要な役割を果たしています。Webアプリケーションを開発する際には、同一オリジンポリシーに注意して実装することが求められます。
同一オリジンポリシーによって、ブラウザは以下のようなリクエストを制限します。
- 異なるオリジンのドキュメントからのリソース読み込み 例えば、WebページAのJavaScriptコードからWebページBの画像を読み込むことはできません。
- 異なるオリジンのドキュメントへのリクエスト送信 例えば、WebページAのJavaScriptコードからWebページBのフォームにデータを送信することはできません。
- 異なるオリジンのドキュメントへのCookieの送信 例えば、WebページAのJavaScriptコードからWebページBにCookieを送信することはできません。
- 異なるオリジンのドキュメントへのDOMアクセス 例えば、WebページAのJavaScriptコードからWebページBのDOMを操作することはできません。
同一オリジンポリシーとみなされる例を以下に示します。
- 同じスキーム、ホスト名、ポート番号を持つWebページ同士 例えば、http://example.com/index.htmlとhttp://example.com/about.htmlは同一オリジンポリシーとみなされます。
- プロトコルが異なる場合でも、同じホスト名とポート番号を持つWebページ同士 例えば、http://example.com/index.htmlとhttps://example.com/about.htmlは同一オリジンポリシーとみなされます。
以下に、同一オリジンポリシーとみなされる例を示します。