1

これが状況です。サードパーティベンダーによってホストおよび更新されているサイトがあります。サーバーでホストされている追加リソースへのリンクを提供しています。クライアントは、ベンダー サイトにアクセスし、リンクをクリックして追加のリソースにアクセスします。リクエストがサードパーティ ベンダーからのものであることを確認するには、ベンダー サーバーの IP アドレスを取得する必要があります。

私の質問は、ColdFusion を使用してベンダー サーバーの IP アドレスを取得する方法はありますか? クライアントの IP アドレスを使用できません。クライアントが使用しているベンダー サーバーのアドレスが必要です。

4

4 に答える 4

5

この目標を達成するには、サードパーティと協力する必要があります。これは確かです。

ここでは、少なくとも 2 つの多かれ少なかれ実用的なアプローチを見ることができます。

(1) ある種の保護トークンをリンクに追加します。ベンダーは、暗号化された文字列またはハッシュを生成します。これには、2 人だけが知っている情報が含まれているため、暗号化を解除 (または同じハッシュを生成) して検証することができます。

ハッシュの例:

moment = DateConvert("local2utc", Now());
token = Hash("SecretSaultYouBothKnow" & DateFormat(moment, "yyyy-mm-dd") & TimeFormat(moment, "-HH-mm"));

このトークンはリンクとともに渡され、共有/漏洩を防ぐためにすぐに期限切れになります。

あなたの側でそれを生成して検証することができます。

これは生のアイデアであり、検証に問題が発生する可能性があり、さらにクライアントの無効なリンクを回避する可能性があります (「mm」マスクもスキップする可能性があります)。

暗号化/復号化された文字列も同様に機能します。両方とも、秘密鍵が必要です。

ところで、ベンダーは、サーバーの IP アドレスまたはその他の識別子を暗号化して、データベースと照合し、他のアクションを適用することができます。

(2) ベンダーは、着信リンクを検証するための単純な Web サービスをセットアップできます (0/1 または他の単純なもので応答できます)。

正確な実装は異なる場合があります。繰り返しになりますが、検証のために送り返す URL のトークンである可能性があります。

これは、Jason が提案したソリューションに似ています。ベンダーは、リンクのクリック時にサーバーからサーバーへの要求をサーバーに送信してから、リソースに再配置できます。ただし、クライアントが到着したときに最初のリクエストがすでに処理されていることを確認する必要があるため、これは複雑になる場合があります。

これらのアイデアが理にかなっていることを願っています。

于 2012-08-14T16:26:24.540 に答える
3

いいえ、ありません。リクエストがクライアントから直接送信された場合はそうではありません。ベンダーが何らかのメッセージを最初に送信する場合は、それを使用して検証できます。または、ベンダーのサーバーがクライアントに代わって要求を行っている場合は、CGI.REMOTE_ADDR を使用できます。しかし、ベンダーがあなたのサイトへのリンクを提供しているだけなら、いいえ、ベンダーのサーバーの IP を保証することはできません。

ジェレミーが上で言ったように、最も近いのはHTTP_REFERERをチェックすることですが、それは(非常に簡単に)なりすますことができるため、あまり安全ではありません.

于 2012-08-14T14:43:16.047 に答える
1

ColdFusionで使用可能なCGI変数にアクセスするには、次のようにします。

<cfset ThisIP = CGI.SERVER_NAME>

ここで利用できる多くの便利なCGI変数があります:

http://www.perlfect.com/articles/cgi_env.shtml
于 2012-08-14T14:45:53.130 に答える
1

cfhttp タグを使用してフェッチするページをサーバーに配置してみてください: http://www.dslreports.com/whois

これにより、Web サーバーの IP アドレスが得られます。

于 2012-08-14T15:07:16.443 に答える