Hello there, ('ω')ノ
同一オリジンポリシーとは?
ブラウザが備えている基本的なセキュリティルールで:
- 違うドメイン(オリジン)のページやデータには
- 勝手にアクセスできないようにする
という仕組みです。
【オリジンとは?】
- プロトコル(http / https)
- ドメイン名
- ポート番号
この3つがすべて一致していることが「同一オリジン」です。
どんな問題が起こるのか?
もし同一オリジンポリシーが適切に守られていない場合:
- 社内システムのデータが外部サイトから読み取られる
- 画面表示やCookie情報が盗まれる
といったリスクがあります。
実際のチェック手順① CORS設定を確認する
CORS(Cross-Origin Resource Sharing)は、 特別に「この外部サイトは許可」とするための仕組みです。
① ブラウザの開発者ツール → Networkタブ ② 任意のAPI通信を選択 → Response Headersを確認
✅ 観察ポイント:
- Access-Control-Allow-Origin: * ← 危険
- Access-Control-Allow-Origin: https://trusted.example.com ← 正常
「*」が設定されている場合、誰でもアクセスできる状態です。
実際のチェック手順② クロスサイトリクエストを試す
- 自社ドメインと異なるテストサイトを用意
- テストサイト上で以下のようなコードを実行
<script> fetch("https://intra.example.co.jp/api/data") .then(response => response.text()) .then(data => console.log(data)); </script>
✅ 結果:
- データが取得できてしまう → 同一オリジンポリシー違反の疑いあり
- エラーが出る → 正常
実際のチェック手順③ iframeやフォームPOSTで確認
- 外部サイトからiframe内に社内システムを表示できないか?
- 外部サイトからPOSTリクエストを送って操作できないか?
これらも開発者ツールとプロキシツールを併用してチェックします。
チェックリストまとめ
- [ ] Access-Control-Allow-Origin の設定が「*」になっていないか?
- [ ] 外部サイトからfetchやXHRでデータ取得ができないか?
- [ ] iframeやフォームPOSTで不正操作ができないか?
- [ ] 本番環境で試す前に必ず許可を取ったか?
社内向け補足ポイント
- 社内限定システムであってもCORS設定は重要
- クラウドサービス連携時は特に注意が必要
注意事項
- 本番環境でテストする場合は関係部署と事前調整必須
- 不正な操作ができた場合は速やかに開発担当へ報告
まとめ
- 同一オリジンポリシーはブラウザが守る重要なルール
- CORS設定やクロスサイトリクエストでチェック可能
- 「誰でもアクセスできる状態」になっていないかを確認するのが目的
Best regards, (^^ゞ