【问题标题】:http_referer lost using httpshttp_referer 使用 https 丢失
【发布时间】:2010-11-26 07:50:04
【问题描述】:

描绘两个网页,均使用 https 查看。它们位于不同的域中。

我如何(合理地)确保访问我页面的人是通过驻留在另一个(特定)域上的超链接来的?我只想允许来自该域的流量。任何有关实现此目的的最佳方法的想法都将不胜感激。

我尝试查看 HTTP_REFERER,但显然在这种情况下它没有被发送。我知道 HTTP RFC 指定不从 https -> http 发送推荐人信息,但这是否也适用于 https -> https 跨域或 ssl 证书?

如果重要的话,我的域在 ASP.NET 上运行。我无法控制源域。

谢谢。

【问题讨论】:

  • Referer容易被欺骗,不推荐
  • 我知道引荐来源网址可能被欺骗。我明白我不能让所有人都出去。我需要一个能够很好地工作的解决方案,以阻止随意好奇的人,并阻止人们为目标站点添加书签,从而迫使他们通过我无法控制的站点到达。

标签: https http-referer


【解决方案1】:

详细说明 mjv 的响应:您应该将 HMAC (RFC 2104) 放入 URL。在两台服务器之间有一个共享密钥,并让源服务器生成 /timestamp/hmac/path 形式的链接。 hmac 应该从 hmac(key, timestamp+path) 验证,以便不同的图像生成不同的 hmac。然后,目标服务器可以决定时间戳是否足够年轻,可以源自重定向。

您可以通过将客户端的 IP 地址放入 hmac 来进一步限制它,要求接收 URL 的同一客户端也解析它。但是,在存在仅处理 http 而不处理 https 或反之亦然的 HTTP 代理的情况下,这可能容易出错。

【讨论】:

    【解决方案2】:

    无论 RFC 是否允许发送 http_referer,您都会发现许多 Web 客户端和/或它与服务器之间的代理或其他与隐私相关的网关将删除或欺骗标头中的 http_referer,使大多数基于 http_referer 的“身份验证”方案充其量只能部分发挥作用。

    如果您与第一个 https 服务器的保管人有一些合作,您可能会同意在请求中将基于 time+something_else 的哈希码传递给您的服务器。通过验证您端的哈希码,您将知道您的 https 访问者来自另一台服务器 [最近]。

    【讨论】:

      【解决方案3】:

      如果您无法控制引荐网站,那您就不走运了。

      如果可以,请嗅探引荐来源网址,如果不存在,则弹出一个着陆页,上面写着“单击此处转到站点 A,以便您可以返回此处”。

      此外,花一些时间研究一种更可靠的方法来访问您的“安全”网站。

      【讨论】:

      • 这是我的问题,当有人从站点 A 到达时,推荐人不存在。我需要“转到站点 A”错误来显示给其他人。至于访问该站点,站点 A 将人们定向到我的登录页面。除了欣赏我的平面设计师的作品之外,如果没有登录,他们将无能为力。
      猜你喜欢
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 2017-06-17
      • 2012-12-28
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多