【问题标题】:Checking For SSL With PHP [closed]使用 PHP 检查 SSL [关闭]
【发布时间】:2017-05-18 13:19:25
【问题描述】:

我需要强制我的 Web 应用程序仅通过 HTTPS 运行,现在通常我会检查 $_SERVER['HTTPS'] 值是否存在,但由于我使用 AWS Certificate Manager 来颁发和管理我的 SSL 证书和应用程序位于 AWS 负载均衡器后面,该负载均衡器在 LB 处终止 SSL 并使用普通 HTTP 在内部发送它,服务器未填充该值。

我正在寻找一种方法来检测连接是通过 HTTP 还是 HTTPS 进行的,同时考虑到 SSL 证书位于负载均衡器上并在那里终止这一事实。

【问题讨论】:

  • 有人可以解释为什么我的问题有两个接近的投票。我问了一个具体的问题,可以用具体的答案来回答。
  • 不同的人对于什么问题适合SO有不同的看法。这就是生活。继续。 (顺便说一句,我没有投赞成票)
  • 我认为这是在某些特殊情况和环境下的真实答案。

标签: php amazon-web-services ssl


【解决方案1】:

您可以检查 X-Forwarded-Proto 标头。

https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

一个用于识别 HTTP 请求的原始协议的事实标准,因为即使对反向代理的请求是 HTTPS,反向代理(或负载平衡器)也可以使用 HTTP 与 Web 服务器通信。 Google 客户端与 Google 服务器通信时使用另一种形式的标头 (X-ProxyUser-Ip)。

X-Forwarded-Proto:https

使用 PHP,您可以通过以下方式进行检查:

apache_response_headers();

http://php.net/manual/de/function.apache-response-headers.php

【讨论】:

  • 我想知道为什么 Martijn 删除了你的第一个答案...
  • 我相信我的第一个答案有点简单
  • 我理解反对票,但不是删除。无论如何,这并不重要。顺便说一句,我加 1。
  • 也许他知道更好的方法。这就是为什么我赞成这个问题。我也需要那个答案。
猜你喜欢
  • 2014-12-10
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 2014-04-22
  • 2015-06-18
相关资源
最近更新 更多