如何阻止 PHP 应用程序在会话期间因 IP 更改而强制注销

如何阻止 PHP 应用程序在会话期间因 IP 更改而强制注销

我的网站使用 PHP 编写,在 Apache 上运行。

我的一个用户在具有 2 个 IP 的 WAN 上,他的连接被其中任何一个 IP 路由到我们的服务器。

如果 PHP 检测到 IP 发生变化,它似乎会将用户注销。

它是一个开源应用程序,我认为一定使用了一些常见的流行文件。

有什么方法可以预防吗?

答案1

我认为 apache 与此无关。问题最有可能出在 php 会话中,尽管我认为 php 默认不会检查客户端 ip。你确定你的代码中没有检查会话 ip 的内容吗?

答案2

这不是 PHP,也不是 Apache——它是您所使用的任何 FOSS 包的安全“选项”。PHP 会话没有固有的安全性。

如果使用 IP 192.168.0.1 登录到你的网站,他可能会获得一个会话令牌ABC123。 如果然后前往她的工作站,手动创建包含会话 ID 的 cookieABC123然后去http://您的网站,她会表现得好像到您的系统。当用户使用代理服务器时(例如,来自阿联酋的用户通过一系列 3 个区域路由器路由出去),这一点至关重要,因为代理服务器可能会发生变化 - AOL 就是另一个例子。

应该有一个配置选项来关闭此安全功能。

答案3

我认为它应该在 PHP 中,而不是 Apache 中。您可能想看看 REMOTE_ADDR 是否与 $_SERVER 一起用于生成会话。请参阅此 PHP 参考, 和 这是一个完整的线程关于该主题。

您在 stackoverflow 上可能会有更好的运气。

相关内容