IFrame リファラーの質問 - asp.net c#
-
18-09-2019 - |
質問
アプリケーションの 1 つは Salesforce 内の iframe で実行されますが、リファラーへのアクセスで問題が発生しています。彼らは、リクエストが Salesforce からのものであり、チェック対象の IP アドレスが与えられていることを確認するために、いくつかのリファラー チェックを実行するよう求めています。
私の問題は、次の 2 つの方法のいずれかを介してリファラーにアクセスしようとするたびに発生することです。
HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
HttpContext.Current.Request.UrlReferrer
null が返されます。
リファラーを取得する方法はありますか?
追伸:リファラーを偽装できることは承知していますが、それは要件の一部です。
解決
私の質問が正しく理解できれば、あなたのサイトを指す IFrame を Web ページに埋め込むことであなたのサイトを参照するクライアント サイトがあることになります。指定された一連のサイトの一部であるホスト ページからリクエストが送信されていることを「確認」したいとします。指定されたサイトのセットは、IP アドレスのセットによって記述されます。それはカバーされますか?
トリッキー。まず、リファラーがあると仮定します。そこからホスト名を取得する必要があります ( Uri
タイプ)。次に、DNS を使用してホスト名の IP アドレスを解決する必要があります (これも .NET Framework ではそれほど難しくありません)。
もちろん、リファラーを取得する必要がありますが、それが最も難しい部分です。ブラウザーは、常にリクエストにリファラー ヘッダーを配置するとは限りません。これは、参照先のアドレスが参照元と同じドメインにない場合に特に当てはまります。今回の場合がこれに当てはまります。ああ、これは ショーストッパー.
この問題を解決する (スプーフィングされにくい) より良いアプローチは、ハッシュ ベースの認証を使用することです。あまり洗練されている必要はありません (元の要件がリファラー テストで十分だと思われる場合)。
他のヒント
参照元が唯一の存在です。ページが開かれると、直接アドレスを入力して、ブラウザのアドレスバーから言う(またはあなたのケースでyはSRCを設定する。IFRAMEの)、リファラが空になります。