同一生成元ポリシー(Same-Origin Policy)

(Web関連用語)
https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy

クロスサイトリクエストフォージェリ(CSRF)などのセキュリティ攻撃を防止するために、ブラウザは「同一生成元ポリシー(Same-Origin Policy)」という仕組みを実装している。異なるオリジンのリソースへのアクセスに制約をかけるものである。制約はまた、JSONP や CORS(Cross-Origin Resource Sharing)と呼ばれる仕組みを利用することで一部解除することができる。

オリジンとは

オリジン(Origin)は、スキーム、ホスト、ポート番号の組み合わせである。
下記は同じオリジンとみなされる(=同一オリジン)。
http://site-a.example.com/
http://site-a.example.com:80/
http://site-a.example.com/example.html

下記は異なるオリジンとみなされる(=クロスオリジン)。
https://site-a.example.com/ ← スキームが異なる
http://site-b.example.com/ ← ホストが異なる
http://site-a.example.com:8080/ ← ポート番号が異なる

制限の対象となるもの

  • JavaScriptでの非同期通信
    厳密には「リクエストはできるがレスポンスを取得できない」という制限で、クロスオリジンでは許可された場合にしかレスポンスを取得することはできない。
  • Canvas
    異なるオリジンから読み込まれた画像・データをCanvas内に描画するとCanvasは汚染(taint)される。汚染されたCanvasではデータへのアクセス(getImageData()、toBlob()、toDataURL())が制限される。
  • Web Storage
    Web Storageなどのブラウザー内部に保存されるデータへのアクセスはオリジン単位で権限が分かれているため、異なるオリジンに属するストレージを読み書きすることはできない。
  • X-Frame-Options
    レスポンスヘッダーにSAMEORIGINが設定されている場合、異なるオリジンでは<iframe>などを使った別サイトコンテンツの埋め込みができない。

制限の対象にならないもの

  • Cookie
  • HTTP認証
  • document.domainを書き換えてのinnerHTMLの読み書き
inserted by FC2 system