2009-09-07 6 views
5

写真は2つのWebページです。どちらもhttpsで表示されます。それらは異なるドメインに存在します。httpsを使用してhttp_refererを失った

私のページに到着する誰かが別の(特定の)ドメインに存在するハイパーリンクを介して来たことを(合理的に)保証することができますか?私はそのドメインからのトラフィックを許可したいだけです。これを達成するための最善の方法に関するアイデアは高く評価されます。

私はHTTP_REFERERを調べてみましたが、明らかにこの場合は送信されていません。 HTTP RFCはhttps - > httpから参照情報を送信しないことを指定していますが、ドメインやSSL証明書の間でhttps - > httpsにも適用されますか?

重要な場合は、自分のドメインがASP.NETで動作します。私はソースドメインを制御できません。

ありがとうございます。

+4

Refererは簡単に偽装されていますが、私はそれをお勧めしません –

+3

私はリファラーがなりすましをする可能性があることを知っています。私は皆を忘れることができないことを理解しています。私は気軽に好奇心を保ち、人々が目標サイトをブックマークしないように十分にうまくいくソリューションが必要です。 – BlueRonin

答えて

5

RFCははHTTP_REFERERの送信かを許可するかどうか、あなたは多くのウェブクライアントおよび/またはそれとサーバ間のプロキシまたはその他プライバシー関連のゲートウェイがでHTTP_REFERERを削除したり、偽装することを見つけることができますほとんどのhttp_refererベースの「認証」スキームは、部分的には最高に機能しています。

最初のhttpsサーバーの管理人とのコラボレーションがある場合は、サーバーへのリクエストにtime + something_elseベースのソートのハッシュコードを渡すことに同意することがあります。最後にハッシュコードを確認することで、httpsの訪問者が他のサーバーから来たことがわかります[非常に最近]。

6

mjvの反応を詳しく述べる:HMAC(RFC 2104)をURLに入れる必要があります。 2つのサーバー間で共有秘密を持ち、元のサーバーに/ timestamp/hmac/pathという形式のリンクを生成させます。 hmac(hmac(key、timestamp + path))からhmacを検証し、異なるイメージが異なるhmacを生成するようにする必要があります。ターゲットサーバーは、タイムスタンプがリダイレクトから発生するのに十分な若さかどうかを判断できます。

さらに、クライアントのIPアドレスをhmacに設定することで、URLを受信したクライアントも解決することができます。ただし、httpだけでなくhttpsを処理するHTTPプロキシが存在する場合、エラーが発生しやすくなる可能性があります。

0

参照サイトを管理できない場合は、運が悪いです。

できる場合はリファラーをスニッフィングし、存在しない場合は「ここをクリックしてここに戻ってきます」というリンク先ページをスローします。

さらに、「安全な」サイトにアクセスするためのより堅牢な方法に取り組んでください。

+0

それは私の問題です。誰かがサイトAから到着したときにリファラーが存在しないという事実です。他の人たちにも表示するには、「サイトAに行く」エラーが必要です。 サイトにアクセスすると、サイトAは人を自分のログインページに誘導します。彼らは私のグラフィックデザイナーの作品に感心する以外のログインなしではあまりできません。 – BlueRonin

関連する問題