【问题标题】:Obtain the IP Address of a server获取服务器的 IP 地址
【发布时间】:2012-08-14 14:28:11
【问题描述】:

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

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

【问题讨论】:

  • 检查 HTTP 引用标头。请注意,这很容易被欺骗,并不是防止未经授权的请求的好方法。我不是冷聚变的人,所以我不能提供代码示例。
  • 我正在寻找有关如何验证请求来自供应商站点的任何建议。
  • 如果用户已经为资源添加了书签或直接输入了 url,那么 http referer header 将不存在。因此,如果设置了此标头,您可以解析它以将引用主机与白名单进行比较。看起来这正是您正在寻找的信息。 “这个可选的标头字段允许客户端为了服务器的利益指定文档(或文档中的元素)的地址 (URI)从该地址获取请求中的 URI。” w3.org

标签: coldfusion


【解决方案1】:

您必须与第 3 方合作才能实现此目标,这是肯定的。

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

(1) 将某种保护令牌附加到链接。您的供应商会生成加密字符串或散列,其中包含一些只有你们两个知道的信息,因此您可以解密(或生成相同的散列)并验证它。

散列示例:

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

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

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

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

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

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

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

具体实现可能不同。同样,它可能是 URL 中的某个令牌,您将其发回以进行验证。

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

希望这些想法有意义。

【讨论】:

    【解决方案2】:

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

    您最接近的方法是检查 HTTP_REFERER,正如 Jeremy 上面所说的,但这很容易被欺骗(很容易),所以它不是很安全。

    【讨论】:

      【解决方案3】:

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

      <cfset ThisIP = CGI.SERVER_NAME>
      

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

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

      【讨论】:

      • 这将返回有关客户端的信息。听起来供应商只是最终用户单击的链接的中间步骤列表。
      • 更正供应商服务器只是提供指向我们网站的链接。但是我需要一种方法来验证客户端是否在供应商服务器上并且没有为页面添加书签或直接导航到它。
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-05-18
        • 2010-09-22
        • 1970-01-01
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 1970-01-01
        相关资源
        最近更新 更多