HOME»情報処理安全確保支援士掲示板»H31春 午後1 問1について
投稿する
恐らくですが、サイトBは受け取ったoriginの中身がなんであれ「ttp://site-a.m-sha.co.jp」を返す仕様になっているんだと思います。
理由
①表1項番4でそれを明言しています(当然、これだけだとOriginをそのまま返したとも読み取れます)
②その後のD課長の会話で、「複数のオリジンからのアクセスを許可する場合、(項番4では不十分)」と言い、最終的に許可するオリジンのリストを作って、それとOriginが一致していれば、Access-Control-Allow-OriginにOriginの値を入れると言っています。
つまり、逆に今までは一つのオリジン(サイトA)にしか許可を出しておらず、特にAccess-Control-Allow-OriginにOriginの値を設定しているわけでもなかったと推測できます。
これらの理由から、サイトBはアクセス元に関わらず、サイトAへの許可しか出さないので、結果としてCORSでサイトA以外からのアクセスを遮断できていた(逆にサイトA以外の正規のサイトからのアクセスも遮断していた)というのが、私の考えです。
これに関しては、結構、憶測要素が強めなので、他の方の意見も聞いてみたいところです
H31春 午後1 問1について [0547]
インフラSEさん(No.1)
重複していたらすいません。
どなたか教えていただきたいです。
H31春 午後1 問1では、
「JSONPではアクセス先を制限する機能を持たないため、CORSを用いる。」
という流れだと思うのですが、
図4のリクエストのOriginで指定された値を図5のレスポンスのAccess-Control-Allow-Originで許可するかしないかはどのように決まるのでしょうか?
問題文からは特に判定等せずにリクエストされたOriginをそのまま許可するように見えてしまいました。
もしそうであれは、JSONPと同様にアクセス先の制限ができておらず、
攻撃者のWebサイトに置かれたスクリプトZから会員情報が窃取されてしまうのではないか?
と思いました。
どなたか教えていただきたいです。
H31春 午後1 問1では、
「JSONPではアクセス先を制限する機能を持たないため、CORSを用いる。」
という流れだと思うのですが、
図4のリクエストのOriginで指定された値を図5のレスポンスのAccess-Control-Allow-Originで許可するかしないかはどのように決まるのでしょうか?
問題文からは特に判定等せずにリクエストされたOriginをそのまま許可するように見えてしまいました。
もしそうであれは、JSONPと同様にアクセス先の制限ができておらず、
攻撃者のWebサイトに置かれたスクリプトZから会員情報が窃取されてしまうのではないか?
と思いました。
2020.10.04 18:11
インフラSEさん(No.2)
質問補足です。
問題文より、JSONPでは下記の動作をすると思ってます。
1.ブラウザから偽サイトAへのアクセス(サイトBログイン済)
[偽サイトA]←[Webブラウザ]
2.偽スクリプトXのダウンロード
[偽サイトA]→[Webブラウザ]
3.偽スクリプトXでのサイトBへのアクセス
[Webブラウザ]→[サイトB]
4.会員情報の窃取
[偽サイトA]←[Webブラウザ]←[サイトB]
・CORSでは同様の動作が起こらないのか?
・CORSではサイトBはアクセス先の正当性(サイトAなのか偽サイトAなのか)を判別できるのか?
を知りたいです。
問題文より、JSONPでは下記の動作をすると思ってます。
1.ブラウザから偽サイトAへのアクセス(サイトBログイン済)
[偽サイトA]←[Webブラウザ]
2.偽スクリプトXのダウンロード
[偽サイトA]→[Webブラウザ]
3.偽スクリプトXでのサイトBへのアクセス
[Webブラウザ]→[サイトB]
4.会員情報の窃取
[偽サイトA]←[Webブラウザ]←[サイトB]
・CORSでは同様の動作が起こらないのか?
・CORSではサイトBはアクセス先の正当性(サイトAなのか偽サイトAなのか)を判別できるのか?
を知りたいです。
2020.10.04 18:35
グルタミンさん(No.3)
> 問題文からは特に判定等せずにリクエストされたOriginをそのまま許可するように見えてしまいました。
恐らくですが、サイトBは受け取ったoriginの中身がなんであれ「ttp://site-a.m-sha.co.jp」を返す仕様になっているんだと思います。
理由
①表1項番4でそれを明言しています(当然、これだけだとOriginをそのまま返したとも読み取れます)
②その後のD課長の会話で、「複数のオリジンからのアクセスを許可する場合、(項番4では不十分)」と言い、最終的に許可するオリジンのリストを作って、それとOriginが一致していれば、Access-Control-Allow-OriginにOriginの値を入れると言っています。
つまり、逆に今までは一つのオリジン(サイトA)にしか許可を出しておらず、特にAccess-Control-Allow-OriginにOriginの値を設定しているわけでもなかったと推測できます。
これらの理由から、サイトBはアクセス元に関わらず、サイトAへの許可しか出さないので、結果としてCORSでサイトA以外からのアクセスを遮断できていた(逆にサイトA以外の正規のサイトからのアクセスも遮断していた)というのが、私の考えです。
これに関しては、結構、憶測要素が強めなので、他の方の意見も聞いてみたいところです
2020.10.04 20:42
インフラSEさん(No.4)
グルタミンさん
ありがとうございます!
そうであれば納得できました。
許可するオリジンリストを新規作成するわけではなく、
もともと「site-a.m-sha.co.jp」のみが登録されているオリジンリストが存在しており、
そこに「site-a.m-sha.co.jp」以外に許可するオリジンも追加しようというイメージですね。
ありがとうございます!
>恐らくですが、サイトBは受け取ったoriginの中身がなんであれ「ttp://site-a.m-sha.co.jp」を返す仕様になっているんだと思います。
そうであれば納得できました。
許可するオリジンリストを新規作成するわけではなく、
もともと「site-a.m-sha.co.jp」のみが登録されているオリジンリストが存在しており、
そこに「site-a.m-sha.co.jp」以外に許可するオリジンも追加しようというイメージですね。
2020.10.07 07:48