🗂
ざっくり CORS を学ぶ
まず同一オリジンポリシーを知る必要がある
- 他のオリジンから取得したスクリプトから他のオリジンのリソースへのアクセスを制限するセキュリティの仕組みのこと
具体的に
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