【发布时间】:2017-05-15 18:26:36
【问题描述】:
我有一个应用程序使用 Codeigniter 3x 和 Cloudflare 添加额外的安全层。
当我使用 $_SERVER['REMOTE_ADDR'] 时,我的应用程序返回 Cloudflare 的 IP 而不是我用户的 IP,所以我总是需要使用 $_SERVER['HTTP_CF_CONNECTING_IP']。
到目前为止,还好。当我在任何控制器中需要我的用户 IP 时,我会联系 $_SERVER['HTTP_CF_CONNECTING_IP']。问题是我的会话库没有这样做。 我的 ci_sessions 表中充满了 Cloudflare 的 IP。
所以我的问题可能有点宽泛,但我需要一些关于如何在不弄乱 CI 核心文件的情况下解决这个问题的想法?我注意到system/libraries/session/drivers/Session_database_driver.php 上有一个文件正在使用远程地址。如何扩展它?
干杯!
【问题讨论】:
-
感谢您的回复@DFriend。使用此链接,我能够创建一个自定义驱动程序来覆盖它。我将在此处发布解决方案。
-
你不应该这样做。
-
嗨@Narf。谢谢你的评论。但为什么?我是否应该将所有 ci_sessions IP 地址保留给 Cloudflare 的 IP?我实际上并没有将它们用于任何事情(虽然不确定 CI 的核心),只是认为存储真实用户的值会更好。
-
只有当你使用
sess_match_ip时才重要,这在 Intranet 环境之外是不可持续的,因为公共 IP 地址可能经常变化。换句话说:是的,留下 CF 的地址。
标签: codeigniter codeigniter-3 cloudflare