こんにちは! 👋 Webサイトを見ていると、いろいろな情報が表示されたり、ボタンを押すと裏で別のサービスと連携したりしていますよね。 実は、Webサイト同士が安全に情報をやり取りするには、「オリジン間リソース共有 (Cross-Origin Resource Sharing)」略して CORS (コース) というルールが大切なんです。 今回は、このCORSのルール設定を間違えてしまうと何が起こるのか、専門用語をなるべく使わずに解説します!
🤔 CORSってなに? – Webサイト間の「お隣さん」ルール
インターネットの世界では、基本的にWebサイトは他のWebサイトの中身(データや機能)を勝手に見たり使ったりできないようになっています。これを「同一オリジンポリシー」といいます。🏠 自分のお家(Webサイト)の中は自由だけど、お隣さんのお家(別のWebサイト)には勝手に入れない、というイメージです。
でも、時にはお隣さんと協力して何かをしたい時がありますよね?例えば、あるWebサイト(Aサイト)が表示している地図情報を、別のWebサイト(Bサイト)から取得して表示したい場合などです。 そんな時に、「こういう条件なら、お隣さんからのアクセスを許可しますよ」というルールを決めるのがCORSです。 CORSは、サーバー(情報を提供する側)が設定する「アクセス許可証」のようなものです。
😱 CORS設定ミスってなに? – ルールがゆるゆるだと危険!
CORS設定ミスとは、この「アクセス許可証」の設定が甘くなってしまっている状態のことです。 一番よくある危険な設定ミスは、「どのWebサイトからでもアクセスOK!」という設定にしてしまうことです(専門的には `Access-Control-Allow-Origin: *` と書きます)。 これは、家のドアに鍵をかけずに「誰でもどうぞ!」と言っているようなもので、非常に危険です。🚪🔓
他にも、許可するWebサイトの指定方法が間違っていて、意図しないWebサイトからのアクセスを許可してしまうケースもあります。
💣 設定ミスがあるとどうなるの? – 個人情報が漏洩するかも!?
もし、あなたがログインして使っているWebサービス(例えばオンラインバンクやSNSなど)でCORS設定ミスがあった場合、悪意のある別のWebサイト(罠サイト)が、あなたの情報を盗み見ることができてしまう可能性があります。
具体的には、以下のような流れで攻撃が行われることがあります。
- あなたが、CORS設定ミスのあるWebサービス(例:
my-bank.com
)にログインします。 - 次に、あなたが気づかずに悪意のあるWebサイト(例:
bad-site.com
)を訪問します。 bad-site.com
は、あなたのブラウザに指示を出して、my-bank.com
からあなたの個人情報(例: 口座残高や登録情報など)を取得させます。my-bank.com
はCORS設定が甘いため、「bad-site.com
からのリクエストだけど、まあいいか!」と情報を渡してしまいます。bad-site.com
は受け取ったあなたの個人情報を盗み取ります。😱
このように、CORS設定ミスは、ユーザーが気づかないうちに、ログイン中のサービスの個人情報や秘密の情報が第三者に漏洩してしまう危険性があります。 実際に、過去には有名なサービスでもCORS設定の不備が原因で脆弱性が発見された事例があります。例えば、2020年にはAmazon Alexaの一部サブドメインでCORS設定ミスが見つかり、個人情報が取得される可能性が指摘されました。また、2018年にはWebサーバーソフトウェアのApache Tomcatで、CORSフィルターのデフォルト設定が安全でないという脆弱性(CVE-2018-8014)が報告されています。
🛡️ 開発者はどう対策すればいいの? – 許可する相手をしっかり指定!
Webサイトやサービスを開発する人は、CORSの設定を正しく行うことが非常に重要です。 基本的には、以下の点に気をつける必要があります。
- 許可するオリジン(Webサイト)を具体的に指定する:
「誰でもOK (`*`)」の設定は極力避け、連携が必要なWebサイトのドメイン(例: `https://partner-site.com`)だけを正確に指定します。 - 必要最小限の許可にとどめる:
許可するHTTPメソッド(情報の取得、更新など)も、本当に必要なものだけに限定します。 - 認証情報(Cookieなど)を伴うリクエストの扱いを慎重にする:
ログイン情報などを扱う場合は、特に`Access-Control-Allow-Credentials: true`の設定とオリジンの指定を厳格に行います。この設定と `Access-Control-Allow-Origin: *` の組み合わせは非常に危険です。
要するに、「誰に」「何を」許可するのかを厳密に管理することが大切です。✅
まとめ
CORSは、Webサイト同士が安全に連携するための大切な仕組みですが、設定を間違えると情報漏洩などのセキュリティリスクに繋がります。 開発者は正しい設定を心がけ、利用者も怪しいサイトにはアクセスしないなど、基本的な注意を払うことが大切です。😊
コメント