同一オリジンポリシー (SOP)
同一オリジンポリシー (SOP) とは何ですか?
同一オリジンポリシー (SOP)あるオリジンから読み込まれた文書やスクリプトが、別のオリジンのリソースとどのように相互作用できるかを制限するブラウザのセキュリティ規則。
同一オリジンポリシーは Web セキュリティの基本となる隔離境界で、Netscape Navigator 2(1995 年)で初めて導入されました。スキーム・ホスト・ポートがすべて一致する場合にのみ同一オリジンとみなされ、そうでなければブラウザはスクリプトによるレスポンスの読み取り、クロスオリジンフレームの DOM へのアクセス、他サイトの Cookie の参照を阻止します。SOP により、別タブで開いているネットバンキングセッションの内容を悪意あるページが読み取ることを防げます。
SOP が守る範囲・守らない範囲
SOP が制限するのは「読み取り」であり「送信」ではありません。ページは依然としてクロスオリジンのリクエスト(<form> の POST、<img> の読み込み)を発生させられるため、CSRF が別の脆弱性クラスとして存在します。SOP は CORS(WHATWG の Fetch 標準で定義)、postMessage、document.domain、レガシーな JSONP によって選択的に緩和されます。過度に緩い例外設定(たとえばリクエスト元を Access-Control-Allow-Origin に反映しつつ Access-Control-Allow-Credentials: true を返すなど)は、クロスオリジンの情報漏洩や認証バイパスの主な原因です。
SOP を超えた強化
2018 年の Spectre サイドチャネルの公表により、共有レンダラープロセス内で一方のオリジンが他方のメモリを読み取るのを SOP 単独では防げないことが明らかになりました。Chrome 67 はこれを受け、各サイトを個別の OS プロセスに分離する サイト分離(Site Isolation) を既定で有効化し、現在は Fetch 標準の一部である クロスオリジン読み取りブロック(CORB) を追加しました。最新の防御では SOP に加えて COOP・COEP・CORP の各レスポンスヘッダーを重ね、完全なクロスオリジン分離を選択します。
flowchart TD
A[https://app.example:443 のスクリプト] --> B{対象オリジンが一致?<br/>スキーム + ホスト + ポート}
B -->|同一オリジン| C[レスポンス・DOM・Cookie の読み取り許可]
B -->|クロスオリジン| D{明示的な緩和?}
D -->|CORS / postMessage| E[ヘッダーで制御されたアクセス]
D -->|なし| F[ブラウザが読み取りを遮断<br/>CORB / 不透明なレスポンス]● よくある質問
同一オリジンポリシー (SOP) とは何ですか?
あるオリジンから読み込まれた文書やスクリプトが、別のオリジンのリソースとどのように相互作用できるかを制限するブラウザのセキュリティ規則。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
同一オリジンポリシー (SOP) とはどういう意味ですか?
あるオリジンから読み込まれた文書やスクリプトが、別のオリジンのリソースとどのように相互作用できるかを制限するブラウザのセキュリティ規則。
同一オリジンポリシー (SOP) からどのように防御しますか?
同一オリジンポリシー (SOP) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
同一オリジンポリシー (SOP) の別名は何ですか?
一般的な別名: SOP。