情報処理安全確保支援士試験 午後問題から学ぶ【CORS】

情報処理安全確保支援士試験の午後問題には、情報セキュリティに関する最新の動向を反映した題材が採用されています。

キーワードに加え、設計やインシデント対応能力をシミュレーションできる良い学びの場ですので、情報処理安全確保支援士試験合格はもちろん、情報処理安全確保支援士となった後も能力向上のために学習していきましょう。

今回は、「Webサイト間の情報連携」を題材にした「CORS」を解説していきます。

CORSとは

CORS(Cross-Origin Resource Sharing)とは、その英語の通りで、オリジン間リソース共有とも呼ばれます。

あるオリジンで動作しているWebアプリケーションに、異なるオリジンにあるリソースへのアクセス権を与えるようWebブラウザに指示するための仕組みのことです。

平成31年度春期情報処理安全確保支援士試験での「CORS」

「Webサイト間の情報連携」を題材に「CORS」の問題が出題されました。採点講評によると、正答率が低かったようです。

それでは「CORS」の問題となった部分を見ていきましょう。

 CORSとは、あるWebサイトから他のWebサイトへのアクセスを制御することができる仕組みであるXMLHttpRequestを使って”https://test2.example.com/test”にリクエストを送るスクリプトの例を図2に示す。

f:id:aolaniengineer:20191223213447p:plain

Webブラウザが ”https://test1.example.com/”にアクセスし、図2のスクリプトを含むページを読み込んだとする。図2のスクリプトが実行されると、最初にWebブラウザは”https://test2.example.com/test”にプリフライトリクエストと呼ばれるリクエストを送る。そうすると、実際のリクエスト(以下、メインリクエストという)で許可されるメソッド名やヘッダフィールド名などがレスポンスとして返る。その後、メインリクエストを送り、レスポンスが返る。この一連の動作を図3に、また、図3中の(ⅲ)〜(ⅵ)のリクエストとレスポンスの先頭部分の例を図4〜図7に示す。

f:id:aolaniengineer:20191223214227p:plain

f:id:aolaniengineer:20191223214313p:plain

f:id:aolaniengineer:20191223214344p:plain

f:id:aolaniengineer:20191223214413p:plain

f:id:aolaniengineer:20191223214438p:plain

Cさんは、スクリプトZの実装にCORSを用いたときの一連の動作を検討し、表1にまとめた。

f:id:aolaniengineer:20191223214657p:plain 

設問3(1)表1中の(f)に入れる適切なURLを答えよ。

正解:https://site-a.m-sha.co.jp

設問3(2)表1中の(g)に入れる適切な字句を、30字以内で答えよ。

正解:売れ筋商品情報配信の申込ページのオリジン

【出典:情報処理安全確保支援士試験 平成31年度春期午後1問1(一部、省略部分あり)】

(f)に入るのは「Access-Control-Allow-Origin」ヘッダフィールドの具体的な値のようです。表1だけ見ても分からないので、前段の図3、図4〜7と対比して見ていきます。

  そうすると表1のNo.1が図3の(ⅰ)から始まり、No.4は(ⅳ)(プリフライトリクエストのレスポンス)に該当することが分かります。

続いて、(ⅳ)の先頭部分の説明が図5にあり、「Access-Control-Allow-Origin」ヘッダフィールドについて、注1に「Access-Control-Allow-Originには、Webサイトが許可するオリジンが返される」とあります。

つまり、表1のNo.3(プリフライトリクエスト)で設定された「Origin」ヘッダフィールド”https://site-a.m-sha.co.jpの値が、WebサイトB(API-Y)が許可するオリジンになります。

(g)に入るのは、WebブラウザがWebサイトBにより許可されたオリジンである”https://site-a.m-sha.co.jp”と比較して矛盾がないかどうかを判断するためのものである必要があります。

したがって、それはWebブラウザが最初にアクセスしたWebサイトAの売れ筋商品情報配信の申込ページのオリジンということになります。

Follow me!