メインコンテンツへ
セキュリティ

CORS(Cross-Origin Resource Sharing)の仕組みとして正しいものはどれか。

ア.クライアント側のJavaScriptがCORSポリシーを判断し、危険なリクエストをブロックする
イ.CORSはSSL/TLS証明書によって制御され、HTTPSのみで有効になる
ウ.CORSを設定すると、すべてのオリジンからのリクエストが自動的にブロックされる
エ.サーバが許可するオリジンをAccess-Control-Allow-Originヘッダで明示し、ブラウザが異なるオリジンへのリクエストを許可する正解

解説

CORSは「訪問許可リスト」のようなもの。サーバが「このドメインからの来客はOK」と表明し、ブラウザがその許可リストを確認してリクエストを通す。

なぜ エ が正解か

ブラウザは同一オリジンポリシー(SOP)により異なるオリジンへのリクエストを制限する。CORSはSOPの例外を定義する仕組み。サーバはAccess-Control-Allow-Originヘッダで許可するオリジンを指定する。ブラウザはこのヘッダを確認し、許可されたオリジンからのリクエストは通過させる。

なぜ ア は間違いか

CORSのポリシー判断はブラウザが行うが、クライアントのJavaScriptが直接制御するのではなく、ブラウザの組み込み機能がサーバのレスポンスヘッダを見て判断する。

なぜ イ は間違いか

CORSはSSL/TLS証明書とは無関係。HTTPでもCORSは動作する(セキュリティとしては問題があるが)。

なぜ ウ は間違いか

CORSを設定するとブロックではなく、指定したオリジンからのアクセスを「許可」する。デフォルト(未設定)では同一オリジンのみ許可。

出典: AI生成問題(学習用)