HOME»情報処理安全確保支援士掲示板»CORSのCookieについて(H31春午後1)
投稿する
CORSのCookieについて(H31春午後1) [0887]
秋に向け勉強中の者さん(No.1)
H31春 午後1
問1 Webサイトのセキュリティに関する問題
CORSのCookieに関する質問です。
私の理解不足かもしれません。
分からないため、ご教示をお願いします。
問題文、5ページ下段のくだりです。
「~図3であれば、【e】の動作の際に、test2.example.comから発行されたCookieが送られる。」とあります。
【e】の答えは、(Ⅴ)メインリスエスト、ということは分かりました。
この問題文で、「test2.example.comから発行されたCookie」とありますが、疑問は、test1.example.comから発行されたCookieを、test2.example.comに送るのではないのか。
私の理解では、CORSのCookie送信に関しては、同一オリジン間の制約を超え、別のオリジンにCookieを送れる、と理解しました。となると、
test1.example.comがブラウザにセットしたCookieを、別のオリジンであるtest2.example.comに送るのではないのかと。
また、問題文のとおりであるなら、test2.example.comがブラウザにCookieをセットするタイミングは、図3の「(Ⅳ)レスポンス」でSet-Cookieで送られてくるのでしょうか。
どなたかご教示願います。
問1 Webサイトのセキュリティに関する問題
CORSのCookieに関する質問です。
私の理解不足かもしれません。
分からないため、ご教示をお願いします。
問題文、5ページ下段のくだりです。
「~図3であれば、【e】の動作の際に、test2.example.comから発行されたCookieが送られる。」とあります。
【e】の答えは、(Ⅴ)メインリスエスト、ということは分かりました。
この問題文で、「test2.example.comから発行されたCookie」とありますが、疑問は、test1.example.comから発行されたCookieを、test2.example.comに送るのではないのか。
私の理解では、CORSのCookie送信に関しては、同一オリジン間の制約を超え、別のオリジンにCookieを送れる、と理解しました。となると、
test1.example.comがブラウザにセットしたCookieを、別のオリジンであるtest2.example.comに送るのではないのかと。
また、問題文のとおりであるなら、test2.example.comがブラウザにCookieをセットするタイミングは、図3の「(Ⅳ)レスポンス」でSet-Cookieで送られてくるのでしょうか。
どなたかご教示願います。
2022.06.05 18:41
万年受験生さん(No.2)
TO 「秋に向け勉強中の者」さん
誰も回答していないみたいなので、返信します。
「test2.example.comから発行されたCookie」がtest2.example.comに送られる事しか、
記述されていないです。Cookieは、各サーバ単位で管理されるので、
もし、test1.example.comで発行されたCookieの値をtest2.example.comのCookieで
利用するなら、値をコピーして利用するしかないと思います。
[CORSの概要]ではそこのところがあいまいですが、
[図1 WebサイトBからWebサイトAへの情報連携機能]の注3)で
「会員がWebサイトBにログインした状態の時にアクセスする。」と記載されていますから、
事前にtest2.example.comのCookieは設定されているものとして
記載されているのでは無いかと思います。
誰も回答していないみたいなので、返信します。
>私の理解では、CORSのCookie送信に関しては、同一オリジン間の制約を超え、
>別のオリジンにCookieを送れる、と理解しました。となると、
>test1.example.comがブラウザにセットしたCookieを、
>別のオリジンであるtest2.example.comに送るのではないのかと。
「test2.example.comから発行されたCookie」がtest2.example.comに送られる事しか、
記述されていないです。Cookieは、各サーバ単位で管理されるので、
もし、test1.example.comで発行されたCookieの値をtest2.example.comのCookieで
利用するなら、値をコピーして利用するしかないと思います。
>また、問題文のとおりであるなら、test2.example.comがブラウザにCookieをセットするタイミングは、図3の>「(Ⅳ)レスポンス」でSet-Cookieで送られてくるのでしょうか。
[CORSの概要]ではそこのところがあいまいですが、
[図1 WebサイトBからWebサイトAへの情報連携機能]の注3)で
「会員がWebサイトBにログインした状態の時にアクセスする。」と記載されていますから、
事前にtest2.example.comのCookieは設定されているものとして
記載されているのでは無いかと思います。
2022.06.08 10:19
秋に向け勉強中の者さん(No.3)
万年受験生さん、返信ありがとうございます。
私は、CORSとクッキーの共有がごっちゃになっていましたので、再度調べ整理してみました。
(CORS)
Webブラウザは、test1からスクリプトを読み込む。
スクリプトは、CORSにより、スクリプトを読み込んだtest1と異なるオリジンであるtest2にアクセスすることができ、test2から情報を受け取り、受け取った情報をtest1に渡す。
(クッキー)
クッキーは、基本は、発行したサーバとブラウザ間でやり取りし、同一性を担保するもの。
クッキーを発行したサーバ以外(異なるオリジン)に同クッキーを送信することはないが、クッキーにdomain属性(domain=example.com)が付された場合は、サブドメイン間(test1.example.comと、test2.example.com)に限って、クッキーが共有される。
(結論)
設問どおり、test2からWebブラウザあてに発行されたCookieが、test2に返される。
それでは、どの段階で、test2のクッキーが発行されたのか。
この設問と流れ図だけでは、分からない、との結論です。
また、情報連携の観点からすれば、test2で発行されたクッキーには、domain属性(domain=example.com)が付いており、最終的にtest1に送られるのではないか、と考えました。
また、「図3の「(Ⅳ)レスポンス」でSet-Cookieで送られてくるのでしょうか」と質問しましたが、
(可能性1)
「(Ⅳ)レスポンス」は、プリフライトリクエストに対する回答なので、クッキーのセットまでは行われない。
その前段の何らかのタイミングで、Webブラウザがtest2にアクセスし、既にクッキーが発行されていた。
(可能性2)
「(Ⅲ)プリフライトリクエスト」では、事実、Webブラウザがtest2にアクセスしているので、「(Ⅳ)レスポンス」のタイミングで、test2からWebブラウザあてにクッキーが発行される。
未だ曖昧なところはありますが、勉強してまいります。
ありがとうございました。
私は、CORSとクッキーの共有がごっちゃになっていましたので、再度調べ整理してみました。
(CORS)
Webブラウザは、test1からスクリプトを読み込む。
スクリプトは、CORSにより、スクリプトを読み込んだtest1と異なるオリジンであるtest2にアクセスすることができ、test2から情報を受け取り、受け取った情報をtest1に渡す。
(クッキー)
クッキーは、基本は、発行したサーバとブラウザ間でやり取りし、同一性を担保するもの。
クッキーを発行したサーバ以外(異なるオリジン)に同クッキーを送信することはないが、クッキーにdomain属性(domain=example.com)が付された場合は、サブドメイン間(test1.example.comと、test2.example.com)に限って、クッキーが共有される。
(結論)
設問どおり、test2からWebブラウザあてに発行されたCookieが、test2に返される。
それでは、どの段階で、test2のクッキーが発行されたのか。
この設問と流れ図だけでは、分からない、との結論です。
また、情報連携の観点からすれば、test2で発行されたクッキーには、domain属性(domain=example.com)が付いており、最終的にtest1に送られるのではないか、と考えました。
また、「図3の「(Ⅳ)レスポンス」でSet-Cookieで送られてくるのでしょうか」と質問しましたが、
(可能性1)
「(Ⅳ)レスポンス」は、プリフライトリクエストに対する回答なので、クッキーのセットまでは行われない。
その前段の何らかのタイミングで、Webブラウザがtest2にアクセスし、既にクッキーが発行されていた。
(可能性2)
「(Ⅲ)プリフライトリクエスト」では、事実、Webブラウザがtest2にアクセスしているので、「(Ⅳ)レスポンス」のタイミングで、test2からWebブラウザあてにクッキーが発行される。
未だ曖昧なところはありますが、勉強してまいります。
ありがとうございました。
2022.06.11 21:03
万年受験生さん(No.4)
この問題の理解を分かりにくくしているのは、M社の情報連携で登場する
WebサイトA(site-a.m-sha.co.jp)とWebサイトB(site-b.m-sha.co.jp)と前提が、
[CORSの概要]で登場するtest1.example.comとtest2.example.com/testの前提に
明確にどう関わっているのかが記載されていないことが原因と思います。
M社のサイトで行なっていることは、
「WebサイトAは、会員専用の機能は有していない」→withCredentialsで指定するCookieは無い
「WebサイトBは、Cookieを利用したセッション管理を行なっている」→withCredentialsで指定するCokkieを持つ
ことになると思います。
[CORSの概要]の説明の中で唐突にCookieを用いたセッション管理の話が、最後に出てくるのは、
M社のサイト実装方法を意識しているのでしょうね。
しかし、CORSでの例では、一般論としてドメイン名(example.com)は別にすべきと思います。
私は、WebサイトAからWebサイトBへAPI-Yが呼ばれる前にWebサイトBに接続してセッション管理されたCookieはブラウザに配送済みと思います。(可能性1です)
また、Cookieと言ってもWebサイトBでセッション管理するクレデンシャル情報ですので、
WebサイトAには不要なCookieですよね。
IPAのサイトにCookieの安全性を記載している「セキュア・プログラミング講座」がありますが、
Cookieのdomain指定は、安全性のためにしないことも記載されています。
※ www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/302.html
私の考えでは、この問題は、CORSの知識啓蒙にはなるが、
深く問題を追っていったら不明確な点が多いと考えます。
WebサイトA(site-a.m-sha.co.jp)とWebサイトB(site-b.m-sha.co.jp)と前提が、
[CORSの概要]で登場するtest1.example.comとtest2.example.com/testの前提に
明確にどう関わっているのかが記載されていないことが原因と思います。
M社のサイトで行なっていることは、
「WebサイトAは、会員専用の機能は有していない」→withCredentialsで指定するCookieは無い
「WebサイトBは、Cookieを利用したセッション管理を行なっている」→withCredentialsで指定するCokkieを持つ
ことになると思います。
[CORSの概要]の説明の中で唐突にCookieを用いたセッション管理の話が、最後に出てくるのは、
M社のサイト実装方法を意識しているのでしょうね。
しかし、CORSでの例では、一般論としてドメイン名(example.com)は別にすべきと思います。
私は、WebサイトAからWebサイトBへAPI-Yが呼ばれる前にWebサイトBに接続してセッション管理されたCookieはブラウザに配送済みと思います。(可能性1です)
また、Cookieと言ってもWebサイトBでセッション管理するクレデンシャル情報ですので、
WebサイトAには不要なCookieですよね。
IPAのサイトにCookieの安全性を記載している「セキュア・プログラミング講座」がありますが、
Cookieのdomain指定は、安全性のためにしないことも記載されています。
※ www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/302.html
私の考えでは、この問題は、CORSの知識啓蒙にはなるが、
深く問題を追っていったら不明確な点が多いと考えます。
2022.06.12 07:46