获取服务器的IP地址

时间:2012-08-14 14:28:11

标签: coldfusion

在这种情况下,我们有一个由第三方供应商托管和更新的网站。我提供了在我们的服务器上托管的其他资源的链接。客户端将访问供应商站点并单击链接以访问我们的其他资源。要验证请求来自我们的第三方供应商,我需要获取供应商服务器的IP地址。

我的问题是,有没有办法使用ColdFusion获取供应商服务器的IP地址?我无法使用客户端IP地址,我需要客户端使用的供应商服务器地址。

4 个答案:

答案 0 :(得分:5)

你必须与第三方合作才能实现这一目标,这是肯定的。

我可以在这里看到至少两种或多或少的工作方法。

(1)在链接上附加某种保护令牌。您的供应商生成加密的字符串或哈希,包括您只知道的一些信息,因此您可以解密(或生成相同的哈希)并对其进行验证。

散列示例:

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

此令牌随链接一起传递并快速过期以防止共享/泄漏。

您可以自行生成并验证它。

这是一个原创的想法,验证可能存在问题,并且避免客户端无效链接(也可以跳过“mm”掩码)。

加密/解密字符串的工作方式类似。你们现在只需要秘密密钥。

顺便说一句,您的供应商可以加密他们的服务器IP地址或其他标识符,以便根据您的数据库进行检查,并可能应用其他一些操作。

(2)您的供应商可以为您设置简单的Web服务来验证传入的链接(它可以用0/1或其他简单的方式响应)。

确切的实施可能会有所不同。同样,它可能是您发送回来进行验证的URL中的一些令牌。

这类似于Jason建议的解决方案:供应商可以通过链接点击将服务器到服务器请求发送到您的服务器,然后重新定位到资源。但这可能很复杂,因为您必须确保在客户端到达时已经处理了第一个请求。

希望这些想法有意义。

答案 1 :(得分:3)

不,没有。如果请求直接来自客户端,则不会。如果供应商首先发送某种消息,您可以使用它来验证。或者,如果供应商的服务器是代表客户端发出请求的服务器,那么您可以使用CGI.REMOTE_ADDR。但是,如果供应商只是提供您网站的链接,那么不,您无法确定供应商服务器的IP。

你最接近的是检查HTTP_REFERER,正如Jeremy上面所说,但这可能是非常容易欺骗的,所以它不会很安全。

答案 2 :(得分:1)

要访问ColdFusion可用的CGI变量,您可以执行以下操作:

<cfset ThisIP = CGI.SERVER_NAME>

这里有许多有用的CGI变量:

http://www.perlfect.com/articles/cgi_env.shtml

答案 3 :(得分:1)

尝试在您的服务器上放置一个使用cfhttp标记来获取的页面: http://www.dslreports.com/whois

这将为您提供Web服务器的IP地址。