/ 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などに設定しました。私の質問は:
画像のスキャンリオは発生しますか?
はいの場合、Webプロキシがキャッシュされたデータを返すのを防ぐにはどうすればよいですか?PCクライアントのプログラムを変更できず、Webプロキシサーバーを制御できません。
いいえの場合、AがBのデータを取得している理由は何でしょうか。