【问题标题】:Destroy all sessions from specific User销毁特定用户的所有会话
【发布时间】:2017-11-13 02:16:17
【问题描述】:

我正在为我的应用程序使用 Codeigniter 3,为了更高的安全性,我想为用户提供一个选项来销毁他的所有会话。

为什么?因为用户在不同设备上登录时可能有多个活动会话。如果一个设备或帐户被劫持,用户应该有可能销毁他所有的活动会话,并且被劫持的帐户/设备被 CI 应用程序强制注销。

使用 Codeigniter 和 sess_time_to_update 配置并不那么容易。因为在特定时间之后,会话将使用新的会话 ID 重新生成。

Destroying a specific session in Code Igniter 只是解决方案的一半,因为在会话重新生成时,用户 ID 列不会填充用户 ID。

简而言之目标: CI 需要一个函数来根据用户 ID 查找所有会话,或者在 sess_time_to_update 配置自动重新生成用户 ID 后,我们如何将用户 ID 添加到会话中

感谢您的提示和帮助

【问题讨论】:

  • 我认为您需要创建一个自定义会话处理程序并将会话保存在数据库中......这将为您提供帮助
  • 我认为您可以在用户注销时在数据库中添加标志,并在每次用户尝试从其他设备登录时检查该标志

标签: php codeigniter session logout destroy


【解决方案1】:

理想情况下,您希望自己创建自定义函数。 codeignighter 在某种程度上就像 bootstrap,因为 codeignighter 是 php,而 bootstrap 是 css。简单的 php 代码,是的,在库中拥有 php 函数很方便,但大多数 php 编码器无论如何都会这样做。我个人不会分享我的自定义函数名称,因为它存在安全风险。但是,让会话保持时间过长也是一个安全风险。对于每个用户连接,$_SERVER 数组中都有一个会话 cookie。您需要做的是想出将这些 cookie 存储在 db 表中,然后将这些 cookie 条目移动到删除提示(这将是另一个表),然后使用 Java 调用命令(按时间间隔)查看是否cookie 在删除提示中,如果是,它将通过命令取消设置 cookie:

setcookie("PHPSESSID","",time()-3600,"/");
////then kick them out:  
session_destroy();
 header('Location: index.php');

 exit();

在我的一个系统上,我想出了一个不同的 cookie 系统,它基于连接和其他客户端变量。如果它没有看到从那里解析的任何检查(cookie、IP 地址、客户端主机名和其他一些),它会将不匹配的 IP 地址添加到表中(用于管理员审核),然后添加 该 IP 地址到防火墙中的拒绝 IP 地址,然后将它们重定向到 FBI 网站。我也在那个网络服务器上我在 apache 配置中运行了一个特殊的代码,它不会接受 vpn 连接,这样那些认为他们可以隐藏在 vpn 后面的黑客,他们甚至无法访问服务器(那里的网络浏览器超时。哈哈)

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2016-11-04
    • 2013-06-17
    • 2020-08-14
    • 2011-10-07
    相关资源
    最近更新 更多