CORS(Cross-Origin Resource Sharing,オリジン間リソース共有)【情報処理安全確保支援士試験 平成31年度 春期 午後1 問1 設問2】

情報処理安全確保支援士試験 平成31年度 春期 午後1 問1 設問2

問1 Webサイトのセキュリティに関する次の記述を読んで、設問1〜3に答えよ。

(略)

【CORSの概要】

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

f:id:aolaniengineer:20200508042636p:plain

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

f:id:aolaniengineer:20200508042719p:plain

f:id:aolaniengineer:20200508042738p:plain

f:id:aolaniengineer:20200508042806p:plain

f:id:aolaniengineer:20200508042822p:plain

f:id:aolaniengineer:20200508042835p:plain

 また、CORSでは通常、Webブラウザは、スクリプトを読み込んだページのオリジンだけにCookieや、ベーシック認証の情報を送る。図2では設定していないが、XMLHttpRequestのプロパティのwithCredentialsの値がtrueに設定されている場合、図3であれば、(e:)の動作の際に、test2.example.comから発行されたCookieが送られる。

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

e:

 Cookieはサーバで発行され、Webブラウザが必要に応じて送ります。

 「CORSでは通常、Webブラウザは、スクリプトを読み込んだページのオリジンだけにCookieや、ベーシック認証の情報を送る」とあります。

これは、図3の(ⅱ)のスクリプト発行元であるtest1.example.comだけにWebブラウザからCookieを送信することを示しています。

一方、「XMLHttpRequestのプロパティのwithCredentialsの値がtrueに設定されている場合」には、「test2.example.comから発行されたCookieが送られる」とあるように、図3の(ⅲ)か(ⅴ)で、Webブラウザからtest2.example.comへCookieが送られることになります。

 問題文でヒントになりそうな箇所を探すと以下の記述があります。

 「図2のスクリプトが実行されると、最初にWebブラウザは”https://test2.example.com/test”にプリフライトリクエストと呼ばれるリクエストを送る。そうすると、実際のリクエスト(以下、メインリクエストという)で許可されるメソッド名やヘッダフィールド名などがレスポンスとして返る。その後、メインリクエストを送り、レスポンスが返る。」

 これは、上記の「XMLHttpRequestのプロパティのwithCredentialsの値がtrueに設定されている場合」のやり取りをプリフライトリクエスト(ⅲ)とレスポンス(ⅳ)で行い、それに応じて(ⅴ)のメインリクエストでCookieが送られると考えれば良さそうです。