同一生成元ポリシー
Same Origin Policy
https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy
異なる オリジン (Cross-origin)間でのリソースへのアクセスを制限する セキュリティ 機構
スキーム や ホスト、ポート 番号が同じ場合、オリジンは同じとされる(Same-origin)
table:_
URL1 URL2 同じオリジン?
https://www.example.com:443 https://www.evil.com:443 Cross-origin(ドメイン名が異なる)
https://www.example.com:443 https://abc.example.com:443 Cross-origin(サブドメインが異なる)
https://www.example.com:443 http://www.example.com:443 Cross-origin(スキームが異なる)
https://www.example.com:443 https://www.example.com:80 Cross-origin(ポート番号が異なる)
https://www.example.com:443 https://www.example.com:443 Same-origin
これにより XSS や CSRF などの攻撃を軽減・防止することが可能
window.opener のような JavaScript の API を利用して、異なるオリジンの情報を参照しようとすると、特定の情報にはアクセスや書き込みができなかったりする制限がある
また、異なるオリジン間で XMLHttpRequest や <img> によって、ネットワーク越しにデータを読み書きする際には、以下のようなカテゴリに分類される
https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy#異なるオリジンへのネットワークアクセス
異なるオリジンへの書き込みは許可される
e.g. リンクやフォームの送信
異なるオリジンの 埋め込み は許可される
e.g. <iframe> や <script>、<link> などのタグによって異なるオリジンのリソースを自身の Web サイトに埋め込むことができる
Google map や X の投稿を埋め込むなど
異なるオリジンからの読み込みは一般に許可されない
異なるリソースを読み込みたい場合、CORS で明示的に許可する必要がある