CodeIgniter - 未从数据库中删除的会话记录(CI - 2.1.4)

时间:2013-12-03 15:05:13

标签: codeigniter session

我已设置配置以使会话在关闭时过期,并使用CI手册中提供的数据库表来存储会话。

但是当我关闭浏览器时,会话数据仍然存储在数据库中。我担心的是会话劫持;记录保留在数据库中(即userdata:loggedin == true),用户可以使用该值设置自己的会话,然后关闭它们。

为什么当用户没有点击退出按钮而是关闭浏览器窗口时,浏览器关闭时数据库中的记录是否被删除?

我的配置设置:

$config['sess_cookie_name']     = 'cisess';
$config['sess_expiration']      = 0;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'usersess';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

1 个答案:

答案 0 :(得分:0)

会话劫持的可能性很小。有人需要访问您的数据库(依赖于您来保护它),也需要相同的用户代理并欺骗IP。更不用说他们需要用户cookie的精确副本,这需要访问他们计算机上的用户浏览器。

此外,您将sess_expiration设置为0,这意味着它永不过期。将其设置为1并查看其执行情况。

编辑:别介意将其设置为一个会让用户登录然后它就会过期。为此道歉。尝试将其设置为较低的时间限制,可能大约30-40分钟。