3

私たちのアプリケーションの 1 つは、Salesforce 内の iframe で実行されますが、リファラーへのアクセスに問題があります。彼らは、リクエストがセールスフォースからのものであり、確認する IP アドレスが与えられていることを確認するために、いくつかのリファラー チェックを行うことを望んでいます。

私の問題は、次の 2 つの方法のいずれかを使用してリファラーにアクセスしようとするたびに発生することです。

HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
HttpContext.Current.Request.UrlReferrer

それは私にnullを返します。

どうすればリファラーを手に入れることができますか?

PS: リファラーを偽装できることは承知していますが、それは要件の一部です。

4

2 に答える 2

1

リファラーは、ページがリンクを介して要求された場合にのみ存在します。アドレスを直接入力して (または、IFRAME の src. を設定して) ブラウザーのアドレス バーからページを開くと、リファラーは空になります。

于 2009-09-28T09:29:50.780 に答える
1

私が質問を正しく理解している場合、あなたのサイトを指す Web ページに IFrame を埋め込むことによって、あなたのサイトを参照するクライアント サイトがあります。指定された一連のサイトの一部であるホスト ページからリクエストが送信されていることを「確認」したいと考えています。指定されたサイトのセットは、一連の IP アドレスによって記述されます。それはそれをカバーしていますか?

トリッキー。まず、リファラーがあると仮定しましょう。そこからホスト名を取得する必要があります (Uriタイプを使用すると簡単です)。次に、DNS を使用してホスト名の IP アドレスを解決する必要があります (これも .NET フレームワークではそれほど難しくありません)。

もちろん、リファラーを取得する必要がありますが、これが最も難しい部分です。ブラウザーは常にリファラー ヘッダーをリクエストに配置するとは限りません。これは、被紹介者のアドレスが被紹介者と同じドメインにない場合に特に当てはまります。IOW、これはショーストッパーです。

この問題を解決する (なりすましになりにくい) より良い方法は、ハッシュ ベースの認証を使用することです。あまりにも洗練されている必要はありません (元の要件がリファラー テストで十分であると感じた場合)。

于 2009-09-28T09:30:11.907 に答える