5

想象两个网页,都使用 https 查看。它们驻留在不同的域中。

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

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

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

谢谢你。

4

3 回答 3

6

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

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

于 2009-09-07T22:51:05.773 回答
5

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

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

于 2009-09-07T20:43:08.927 回答
0

如果您无法控制引用站点,那么您就不走运了。

如果可以的话,嗅探引荐来源网址,如果它不存在,则抛出一个登陆页面,上面写着“点击这里转到站点 A,这样你就可以回到这里”。

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

于 2009-09-07T23:20:56.230 回答