やさしいネットワークとセキュリティ

ネットワーク・セキュリティエンジニアの視点から各種テクノロジーと資格試験対策をやさしく解説します。

情報処理安全確保支援士【H31春午後Ⅰ問1設問3】

設問3 キーワード

 Access-Control-Allow-Origin

XmlHttpRequest(XHR)において、WebサーバからのレスポンスHTTPヘッダにAccess-Control-Allow-Originがある場合に、オリジンが異なるドメインへのアクセスが可能となる。

問題文

f:id:aolaniengineer:20190820051327p:plain

設問3(1)(2)

f:id:aolaniengineer:20190820051345p:plain

(1)該当箇所は、「Access-Control-Allow-Originヘッダフィールドの値は、”(f)”である。」です。

この文章だけでは解答が導けないので、「Access-Control-Allow-Origin」についての説明がないか問題文を見渡します。

ここで落ち着いて問題文の構成を見ると、〔CORSを利用した実装〕は〔CORSの概要〕の具体的実装を示したもので、表1(スクリプトZの実装にCORSを用いたときの一連の動作)は、図3(一連の動作)に該当しています。

図3の「test1.example.com」「test2.example.com」が、それぞれ表1の「WebサイトA」「WebサイトB」に該当します。

さらに、表1のNo.4は、図3の(ⅸ)レスポンスに該当し、ヘッダ情報は図5に示されていることがわかります。

ここに「Access-Control-Allow-Origin」の説明があります。

注1に「Access-Control-Allow-Originには、Webサイトが許可するオリジンが返される」とあります。

オリジンの値が何かを表1で探すと、No.3に「・・Originヘッダフィールドには”https://site-a.m-sha.co.jp”が設定されている。」とあります。

したがって正解は以下の通りです。

「Access-Control-Allow-Originヘッダフィールドの値は、”https://site-a.m-sha.co.jp”である。」

理解のポイントは以下の通りです。

CORSの基本動作の理解と、理解できていなくても落ち着いて問題文から読み取る

 

(2)該当箇所は、「Webブラウザは、(g)とAccess-Control-Allow-Originヘッダフィールドの値を照合し、アクセスが許可されていることを確認する。」です。

Access-Control-Allow-Originヘッダフィールドの値は前問の通り、”https://site-a.m-sha.co.jp”ですが、これはWebサイトBが許可したオリジンです。

この値と照合すべき値としては、その前にWebブラウザが送信したオリジンになります。

したがって正解は以下の通りです。(複数の解答候補があると思います)

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

WebサイトAのオリジン

プリフライトリクエストのOriginヘッダフィールドの値

理解のポイントは以下の通りです。

Webブラウザは、プリフライトリクエストとレスポンスのオリジンを照合してからメインリクエストを送信する。

問題文

f:id:aolaniengineer:20190820100011p:plain

設問3(3)

f:id:aolaniengineer:20190820100231p:plain

該当箇所は、「Web APIのプログラム内に、許可するオリジンのリストを用意しておく必要がある。プリフライトリクエスト又はメインリクエストがWeb APIに送られてきたときに、そのリクエスト中の(h)を、(i)と突合し、(j)した値があればその値をAccess-Control-Allow-Originヘッダフィールドに設定するという内容もコーディング規約に含めればよいだろう。」です。

この説明は、その前の文章にある複数のオリジンからのアクセスを許可するための対応方法が記載されているものです。

突合するものは、一つが「許可するオリジンのリスト」であることはすぐにわかると思います。

もう一つは、リクエスト中とあるので、図4(ⅲ)と図6(ⅴ)または表1のNo.3にある「Origin」「Originヘッダフィールド」であることがわかります。

突合した結果は、一致か不一致しかないので、文意から一致が該当します。

したがって正解は以下の通りです。

「プリフライトリクエスト又はメインリクエストがWeb APIに送られてきたときに、そのリクエスト中のOriginヘッダフィールドを、許可するオリジンのリストと突合し、一致した値があればその値をAccess-Control-Allow-Originヘッダフィールドに設定するという内容もコーディング規約に含めればよいだろう。」

理解のポイントは以下の通りです。

複数のオリジンからのアクセスを前提にした実装方法を問題文から読み取る

www.aolaniengineer.com

www.aolaniengineer.com