• ―IT

    【Web開発者必読】同一オリジンポリシー(SOP)について

    【Web開発者必読】同一オリジンポリシー(SOP)について
    【Web開発者必読】同一オリジンポリシー(SOP)について
    IT
    1. はじめに
    2. オリジンとは
    3. 同一オリジンポリシーとは
    4. まとめ
    5. 参考文献

    はじめに

    同一オリジンポリシー(Same-Origin Policy)について知っていますか? 詳しくは後述致しますが同一オリジンポリシーはGoogleやEdge,Safari等のブラウザに標準で搭載されているクロスオリジンからのアクセスを制限する機能です。

    同一オリジンポリシーの説明画像

    オリジンとは

    同一オリジンポリシーのオリジンとはURLの「http://」や「https://」等のスキーム、「example.com」等のドメイン部分のホストとドメインの後に記載される「:443」等のポート番号の3つを組み合わせたものの事を指します。 ※httpは80、httpsは443のポート番号を既定としています。既定のポート番号の場合は入力を省略して問題ありません。

    オリジン説明画像

    同一オリジンポリシーとは

    オリジンについて説明しましたのでなんとなくイメージが出来てきたのではないかとおもうのですがクロスオリジン(異なるオリジン)からのアクセスを制限する仕組みのことを同一オリジンポリシーと呼びます。 こちらでは詳しくは説明しませんが下記が同一オリジンポリシーによって制限される例です。 ※下記は一例でありその他にも制限される機能はあります。

    • JavaScriptのfetch関数やXMLHttpRequest(XHR)を使用してクロスオリジンへリクエストを送信した場合
    • iframe要素内でクロスオリジンにJavaScriptでアクセスする場合
    • Canvas要素内でクロスオリジンの画像等JavaScriptでアクセスする場合
    同一オリジンポリシーでアクセス制限される説明画像

    同一オリジンポリシーの影響を受けない例外について

    同一オリジンポリシーはセキュリティ面を強固にする為良い仕組みではあるのですが厳しすぎることでデメリットを生じる場合があります。開発者なら無意識に使用されている事も多いかと思いますがhead要素内にJSのライブラリ(jQuery等)のCDNを読み込んで開発したことがあるのではないでしょうか? 本来ならばCDNもクロスオリジンなので同一オリジンポリシーで制限されるのですが制限されてしまうと誰もアクセスできなくなってしまい一からコードを記述する手間が発生してしまいます。 なのでCDN等はCORS(Cross-Origin Resource Sharing)の仕組みによってクロスオリジンからのアクセスを可能にしています。

    jQueryへのアクセスの説明画像

    まとめ

    今回は同一オリジンポリシーについてまとめてみました。 Web制作の勉強等を始めて間もない方はあまり聞きなじみがなにのではないでしょうか? 前回に引き続きブラウザとサーバー内部のやり取りに関した内容ですが意外と重要な内容かと思いますので頭の隅にでも置いておくと良いかと思います。CORSについても勉強も兼ねて後日まとめようかと思っています。

    参考文献

    RECOMMEND

    PCのサムネイル画像

    【図解あり】HTTPとは?HTTPSとの違いは何なのか?