2013-04-06 34 views
11

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

我现在唯一的问题是,当用户不使用HTTPS时,这会给我们的服务器带来不必要的负载,所以我们希望能够检测到它们是否是。但是,由于CloudFlare服务器实际上是连接到我们的,无论通过HTTP进行什么操作(因为我们在CloudFlare上使用一键式SSL),我们的PHP脚本始终报告HTTP,并且即使在用户使用HTTPS时也不会代理映像。有没有办法让CloudFlare报告用户正在使用SSL?

回答

21

找到我的答案,他们发送标题X-FORWARDED-PROTO。它的SSL为https,正常为http

+0

很高兴在您关闭前回答。遇到类似的问题。 – reflexiv 2013-08-08 02:42:52

+3

在CF连接中信任该头部似乎不是一个好主意,根据常见问题,CF不会丢弃请求中发送的原始头部,这可能是一个安全漏洞,您应该检查Cf-Visitor头部。该头部包含一个JSON对象,指示方案 – lordscales91 2016-03-26 10:49:00

+0

如果您正在做的是决定是否重定向到https,如果最终用户浏览的是不安全的http,则不需要信任头部。如果一个“恶意”用户将原始协议覆盖为https,她所有的好处都会降低她的安全性。如果你所做的只是这个,我认为使用X-forward-proto更好,因为它是一个事实上的标准,可以与几乎所有的代理一起使用,而Cf-Visitor是专有的。我虽然赞成你,因为你对信任有很好的评价。 – 2017-02-04 16:26:16