【问题标题】:How to reliably identify a website如何可靠地识别网站
【发布时间】:2011-05-21 08:49:13
【问题描述】:

我有一个从其他子网站链接到的文件。

文件:http://site.com/file.img

网站A链接到它<img src="http://site.com/file.img"></img>

网站 B 链接到它<img src="http://site.com/file.img"></img>

我需要可靠地确定哪些网站访问了该文件,但我知道 $_SERVER['HTTP_REFERER'] 可以被欺骗。我还有什么其他方法可以可靠地确认请求者站点?通过IP,让他们注册一个IP?不确定。设置 API 密钥?有哪些选择?

【问题讨论】:

  • 获取服务器的 IP 不起作用,因为图像是提供给客户端的。
  • 我们在这里需要更多信息 - 这些图像在什么环境中使用?远程站点是否总是被授权显示它们?根据上下文,答案从“私钥签名”到“不可能”不等。
  • @Chris,请添加您的答案,以便我们在那里讨论。

标签: php file statistics


【解决方案1】:

在不涉及复杂领域的情况下,获得推荐人是您能做的最好的事情。

如果您不介意复杂,请继续阅读:设置您的 Web 服务器以向网站 A 和网站 B 提供 file.img,然后要求设置网站 A 和网站 B他们端的代理配置将代表他们的访问者检索file.img

例子:

网站 A 的访问者加载了一个页面,该页面包含像 <img src="http://websiteA.com/file.img"/> 这样的图像标签(请注意参考网站 A 而不是您的网站)。客户相应地从 WebsiteA.com 请求file.img。网站 A 配置为将路径 /file.img 的请求代理到您的服务器 http://site.com/file.img。您的站点验证请求图像的实际上是网站 A,然后将其提供给网站 A 的代理。然后网站 A 将其提供给访问者。

基本上,这对网站 A 和 B 来说是一种痛苦,会给您带来性能损失,并且还需要您进行进一步的配置。但我想这会满足你的要求。

【讨论】:

    【解决方案2】:

    如果一个网站只是链接到一个文件,“网站”本身永远不会真正访问您的图像。相反,正在查看该网站的客户会请求图片。

    因此,您依赖于客户发送的信息,这些信息完全超出您的控制范围,而且根本不可靠。如果您有机会在客户端上设置某种独特的 cookie,您也许可以以某种方式使用它来扩展识别,但即使这样也不可靠。

    没有 100% 可靠的解决方案。

    【讨论】:

    • +1。这个方案的问题是它依赖于可选的 HTTP 引用字段的存在。如果您的客户不提供此信息,那么您只能玩愚蠢的客户端游戏(即yro.slashdot.org/story/10/05/19/1425240/…)。
    • @MrGomez,哇,我想知道有多少开发人员和网站所有者玩这些愚蠢的游戏。不是应该被允许的。
    【解决方案3】:

    看看 OpenID 依赖是如何实现的,它允许一个站点对另一个站点进行身份验证。协议规范将暗示可靠地实现这种方案所需的工作量和开销。

    http://googlecode.blogspot.com/2010/11/googles-sample-openid-relying-party.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 2022-08-03
      • 2011-05-26
      • 2020-08-16
      相关资源
      最近更新 更多