🗂

ざっくり CORS を学ぶ

2022/06/28に公開

まず同一オリジンポリシーを知る必要がある

  • 他のオリジンから取得したスクリプトから他のオリジンのリソースへのアクセスを制限するセキュリティの仕組みのこと

具体的に

A.com からリソースを取得

クライアント ↔ A.com

取得したスクリプトには B.com から情報を取得するように書かれている。
APIの取得とかで。
XMLHttpRequestなどの非同期通信でリソースを取得。

クライアント ↔ A.com
   ↓
  B.com

すると B.com サーバーは
「A.com...だれやおま」
ってなるのか、はたまた

検索すると上位に下記のような画像が出てくる

クライアント ↔ A.com
   ↓
ここでシャットアウト
   
B.com には届かず

どこで判別してるんだって画像が出てくがどっちか謎。

調べてみると
そもそもリクエスト自体送信されないことがわかった。

A.com はOKだけど他(B.com)は通信できませんぜってのが同一オリジンポリシー。

じゃぁ B.com にどうやってアクセスすればええねん。

一定の条件付きで同一オリジンポリシーのルールを緩和して B.com とも通信OKにしよう ≒ CORS

ヘッダーにAccess-Control-Allow-Originうんたらかんたらを設定してください。
それが条件で通信してもOKということにしよう。

ということで
CORS(オリジン間リソース共有)の仕組みを使って
B.com のリソースを取得できるようになったのでした。

なんでもOKにしてしまうとセキュリティに問題があるらしい。

  • XSS
    • クロスサイトスクリプティング
    • A.com が悪意あるサイトだった場合、取得した変なスクリプトがクライアントで実行される
      → セッション情報が抜き取られる
  • CSRF
    • クロスサイトリクエストフォージェリ
    • A.com が悪意あるサイトだった場合、取得した変なスクリプトが B.com に送信されて サーバー上で実行される
      → 不正な書き込みなどがされる

Discussion