http_referer使用https丢失

Blu*_*nin 5 https http-referer

图片两个网页,都使用https查看.它们位于不同的域中.

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

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

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

谢谢.

Mar*_*wis 6

阐述mjv的响应:你应该将HMAC(RFC 2104)放入URL中.在两个服务器之间有一个共享密钥,并让原始服务器生成格式为/ timestamp/hmac/path的链接.应该从hmac(key,timestamp + path)验证hmac,以便不同的图像生成不同的hmacs.然后,目标服务器可以决定时间戳是否足够年轻以来自重定向.

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


mjv*_*mjv 5

无论RFC是否允许发送http_referer,您都会发现许多Web客户端和/或它与服务器之间的代理或其他与隐私相关的网关将删除或欺骗标头中的http_referer,使大多数http_referer崩溃基于"认证"的方案至多部分功能.

如果您与第一个https服务器的保管人有一些合作,您可能同意在请求中向服务器传递基于时间+ something_else的排序哈希代码.通过验证您的哈希码,您将知道您的https访客来自其他服务器[最近].