H31春 午後1 問1について

インフラSEさん  
(No.1)
重複していたらすいません。
どなたか教えていただきたいです。

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なのか)を判別できるのか?
を知りたいです。
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)
グルタミンさん
ありがとうございます!

>恐らくですが、サイト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

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop