7

/ getdataという名前のインターフェイスを備えたasp.netmvc3アプリケーションがあり、さまざまなユーザーがPCクライアントソフトウェアによってサーバーに接続し、このインターフェイスを使用してプライベートデータを取得するとします。さまざまなユーザーは、適切に暗号化された独自のトークンによって識別されます。ここに画像の説明を入力してください

問題は、ClientAが別のユーザーのデータを取得したと言ったことです。ClientAのログから、彼がClientBを取得したことがわかりました(ただし、お互いを知らないため、アカウントを共有できません)。Webアプリケーションのコードを調べましたが、データを混在させる機会が見つかりませんでした。

だから私はこれが起こるのだろうか:

(1)ClientBは、Webプロキシを介してhttpヘッダーにトークンを入れてhttp://mysite.com/getdataへのhttpリクエストを開始します。

(2)Webプロキシが私のWebサーバーにアクセスし、ClientBのデータを取得します。

(3)すべてが正しいので、私のWebサーバーは要求を承認し、ClientBのデータを返します。

(4)ClientBはデータを取得し、正しく表示されます

(5)ClientBがデータを取得したほぼ同時に、ClientAは、ヘッダーにClientAのトークンを使用して同じ要求を開始します。

(6)Webプロキシは、ClientAが要求しているURLがClientBのものと同じであると判断し、結果はまだキャッシュにあり、ClientBのデータを返します。次に、ClientAは別のデータを取得します。

私のWebアプリのインターフェースでは、最初に、クライアント側のキャッシュを防ぐために、すべての応答をno-cache、max-age=0などに設定しました。私の質問は:

  1. 画像のスキャンリオは発生しますか?

  2. はいの場合、Webプロキシがキャッシュされたデータを返すのを防ぐにはどうすればよいですか?PCクライアントのプログラムを変更できず、Webプロキシサーバーを制御できません。

  3. いいえの場合、AがBのデータを取得している理由は何でしょうか。

4

1 に答える 1

0

画像のスキャンリオは発生しますか?

はい、これは、クライアントがGET動詞を使用して/getdataエンドポイントにアクセスしている場合に可能です。

はいの場合、Webプロキシがキャッシュされたデータを返すのを防ぐにはどうすればよいですか?PCクライアントのプログラムを変更できず、Webプロキシサーバーを制御できません。

GetDataエンドポイントにサービスを提供しているコントローラーアクションを[NoCache]属性で装飾して、データがダウンストリームにキャッシュされないようにします。

于 2013-01-18T08:49:42.653 に答える