确定访问者是不是通过 CloudFlare Pro 上的 SSL 连接 [关闭]

Posted

技术标签:

【中文标题】确定访问者是不是通过 CloudFlare Pro 上的 SSL 连接 [关闭]【英文标题】:Determine if visitor connected over SSL on CloudFlare Pro [closed]确定访问者是否通过 CloudFlare Pro 上的 SSL 连接 [关闭] 【发布时间】:2013-03-28 13:48:33 【问题描述】:

我们有一个在 CloudFlare Pro 上运行的站点,该站点使用他们提供的证书进行一键式加密。我们的网站为用户提供“可选”SSL。由于它是一个论坛,我们目前运行一个代理脚本来检测发布的图像是否使用 HTTPS 协议,并通过在我们服务器上运行的脚本自动代理图像以维护安全和我们可爱的绿色锁!

我现在唯一的问题是,当用户不使用 HTTPS 时,这会在我们的服务器上引入不必要的负载,因此我们希望能够检测他们是否使用。但是,由于 CloudFlare 服务器实际上是通过 HTTP 连接到我们的服务器(因为我们在 CloudFlare 上使用一键式 SSL),所以我们的 php 脚本始终报告 HTTP,并且即使用户使用 HTTPS 也从不代理图像。有没有办法让 CloudFlare 报告用户正在使用 SSL?

【问题讨论】:

【参考方案1】:

找到我的答案,他们发送了一个标题X-FORWARDED-PROTO。 SSL 是 https,普通是 http

【讨论】:

很高兴您在关闭前回答。遇到类似的问题。 信任 CF 连接中的标头似乎不是一个好主意,根据 faqs CF 不会丢弃请求中发送的原始标头,这可能是一个安全漏洞,您应该检查 Cf-Visitor而是标题。该标头包含一个指示方案的 JSON 对象 如果您正在做的只是决定是否在最终用户通过不安全的 http 浏览时重定向到 https,那么您无需信任标头。如果“恶意”用户将原始原型覆盖为 https,那么她的所有好处就是降低她的安全性。如果你所做的只是这个,我认为使用 X-forwarded-proto 会更好,因为它是一个事实上的标准,几乎适用于所有代理,而 Cf-Visitor 是专有的。不过我赞成你,因为你对信任有很好的看法。

以上是关于确定访问者是不是通过 CloudFlare Pro 上的 SSL 连接 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

CloudFlare 并通过 PHP 记录访问者 IP 地址

加速访问Cloudflare的网站的解决方案

根据 Cloudflare GEO TARGET 将访问者重定向到他们的语言

Cloudflare 之后的 HTTP 重定向 [关闭]

使用 CloudFlare、Heroku 和 RoR 时如何设置真实 IP 地址?

Cloudflare更智能的分层缓存拓扑生成