加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

如何在nginx反向代理后面的CakePHP中安全地检测SSL?

发布时间:2020-12-13 21:05:17 所属栏目:Nginx 来源:网络整理
导读:CakePHP(我见过的所有版本)检查$_SERVER [HTTPS]以查看是否通过HTTPS而不是普通HTTP发出了请求. 我正在使用nginx作为负载均衡器,其后面是Apache应用服务器.由于SSL连接在负载均衡器处终止,因此就CakePHP而言,未设置$_SERVER [HTTPS]. 我想找到一种在应用服务

CakePHP(我见过的所有版本)检查$_SERVER [‘HTTPS’]以查看是否通过HTTPS而不是普通HTTP发出了请求.

我正在使用nginx作为负载均衡器,其后面是Apache应用服务器.由于SSL连接在负载均衡器处终止,因此就CakePHP而言,未设置$_SERVER [‘HTTPS’].

我想找到一种在应用服务器上检测HTTPS的安全方法.

到目前为止,我已经将它放入我的CakePHP配置中:

$request_headers = getallheaders();
if ( (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) || ( isset($request_headers['X-Forwarded-Proto']) && $request_headers['X-Forwarded-Proto'] == 'https' ) ) {

    $ssl = true;

    // overwrite environment vars (ugly) since CakePHP won't honour X-Forwarded-Proto
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';

} else {
    $ssl = false;
}

然后在nginx配置中,我使用了proxy_set_header X-Forwarded-Proto https;将标志添加到负载均衡器和后端应用程序服务器之间的任何请求.

这完全没问题,但任何向应用程序服务器发出直接请求的人都可能会欺骗他们认为他们正在浏览SSL而不是.我不确定这是否存在安全风险,但这似乎不是一个好主意.

这是安全风险吗?什么是更好的解决方案?

由于使用X-Forwarded-Proto似乎是something of a standard,因此该解决方案可能是提交给CakePHP核心的一个很好的补丁,所以我认为任何答案都可以合法地涉及编辑核心文件.

最佳答案
mod_rpaf会让你这样做.

这会根据nginx发送的标头将Apache中的HTTPS值设置为“on”,这样Cake就可以开箱即用(以及在Apache中运行的任何其他应用程序).

它还会更正REMOTE_ADDR,SERVER_PORT和HTTP_HOST的值.

这是我的示例配置:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读