1

データから、サービスを提供しているパートナーに投稿する必要があります。物事をシンプルにするために、フォーム投稿を介してこれを行いたいと考えています。

JavaScript などを使用して、フォーム データ (ID) をサービス プロバイダーの Web サイトのフォームに投稿します。サービスは、この ID を取得し、関連付けられたデータをユーザーに表示する必要があります。この投稿をサーバー上のフォームに投稿し、結果をポップアップに表示する様子を想像しました。ユーザーが関連付けられたデータに満足している場合は、ポップアップ (サービス プロバイダー サーバー上) のフォームで [送信] をクリックし、サービス プロバイダーがサーバー上のコントローラーに投稿します。

  1. ユーザーが当社のウェブサイトのリンクをクリックする
  2. これにより、データがサービス プロバイダーのサイトに投稿され、サービス プロバイダーのサイトのコンテンツがポップアップ/iframe に表示されます。
  3. ユーザーはポップアップに表示されたデータを確認し、満足していることを確認します
  4. ユーザーがポップアップで送信を押します (サービス プロバイダーがサイトで何かを更新します)。
  5. サービスプロバイダーがフォームデータをコントローラーに送信します(サイトで何かを更新します)

私たちのサーバーだけが彼らのページに投稿でき、彼らだけが私たちのページに投稿できることを確認する必要があります.

MVC3を使用しています。彼らは自分で選んだ Web テクノロジーを使用しています。

これを行うための最も簡単で迅速で安全な方法に関するアドバイス。明らかに、リプレイ攻撃を防ぎ、私たちに投稿できるのはリプレイ攻撃だけであることを確認する必要があります.

4

1 に答える 1

3

物事を単純にするために、フォーム投稿を介してこれを実行したいと思います。私たちは彼らのサーバー上のウェブページに投稿します、彼らはいくつかの処理を行い、私たちのサーバー上のコントローラーアクションにデータを投稿します。

ああ、それは不可能です。アクションが何らかのURLを指しているHTML<form>がある場合(このURLがサーバーにあるかサードパーティのサーバーにあるかに関係なく)、このフォームが送信されると、ブラウザーはこのURLにPOSTしてリダイレクトします。つまり、リモートソースにリクエストを送信して、ドメインでコントローラーアクションをクエリすることはできますが、ブラウザーが原因で、このコントローラーアクションの実行結果をブラウザーに表示することはできません。このリモートURLの実行結果が表示されます。

したがって、1つの手法は、HTML <form>POSTを自分のコントローラーアクションに設定し、それ自体がリクエストをリモートサービスに委任して(WebClientを使用して)、ユーザーにビューを返すことです。

あとは、リモートサーバーのネットワーク管理者に、WebサーバーのIPアドレスからのHTTP要求のみを許可するように依頼するだけです。

もちろん、これにより、ユーザーが自分のコントローラーアクションへのHTTPリクエストを作成し、間接的にリモートサービスにアクセスする可能性が残ります。これを防ぐ唯一の可能な方法は、認証を使用して、このコントローラーアクションへの誰からのパブリックアクセスも拒否することです。

于 2012-05-23T11:15:49.070 に答える