1

ユーザーが ASP.NET アプリケーションのどこから来たのかを判断する信頼できる方法はありますか? 2 つの異なる場所からリンクされている Web アプリケーションがあります。2 つのリンクは別々のドメインにあり、このアプリ内で特定のユーザー権限を指定する必要があります。これが私がこれまでに試したことです...

  • Using Request.UrlReferrer( Referer HTTP ヘッダー)。これは常に空の文字列を返しました。これは、ハイパーリンクが Javascript を使用してポップアップ ウィンドウを起動するためだと思います。私の調査に基づいて、ユーザー エージェントは標準のハイパーリンクでこの HTTP ヘッダーを提供します。Javascript ポップアップは別の話です (明らかに)。

  • リファラーを示す単純なクエリ文字列。バイパスするのがそれほど簡単ではない (より安全な) 何かが必要なため、これは実際にはオプションではありません。

何か案は?物事の壮大な計画では、これは全体的な設計/構造がより優れている可能性があることを理解しています. それはオプションではないため、すべてを再設計することを提案する回答を投稿しないでください。

4

3 に答える 3

5

ユーザーがどこから来ているかを知る信頼できる方法はありません。これは ASP.NET の制限だけでなく、一般的なすべての Web アプリケーションの制限です。URL リファラーは簡単に偽装できるため、信頼性が低くなります。最適なオプションは、暗号化された URL パラメータ、または必要に応じて Cookie であると思います。

したがって、両方のページで共通の秘密鍵が一致している必要があります。

  1. Page1 はキーを使用してアドレスを暗号化し、Page2 に渡します。
  2. Page2 はこのパラメータの存在を確認し、暗号化に使用されたのと同じ秘密鍵で復号化を試みます。
  3. これが成功した場合は、Page2 が呼び出し元を特定できることを意味します。そうでない場合、データは改ざんされています。
于 2009-10-26T21:07:13.990 に答える
1

ブラウザがリファラーを渡すか、説明したようにクエリ文字列を使用しない限り、知る方法はありません。

于 2009-10-26T21:05:14.913 に答える
0

もう 1 つのオプションは、ASP.NET アプリケーションに 2 つの異なるランディング ページを用意することです。ランディング ページでは、セキュリティ オプションを設定してから、共通のホームページにリダイレクトできます。これは、クエリ文字列オプションよりも少し安全です。

または、ASP.NET アプリケーション サイトから取得した参照サイトに 1x1 ピクセルの画像を配置することもできます。リファラーをスクリプトに渡す必要があり、ユーザーのマシンに Cookie を設定して、ユーザーがアプリのホームページにアクセスしたときに参照できるようにすることができます。

于 2009-10-27T02:59:56.823 に答える