我已设置配置以使会话在关闭时过期,并使用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;
答案 0 :(得分:0)
会话劫持的可能性很小。有人需要访问您的数据库(依赖于您来保护它),也需要相同的用户代理并欺骗IP。更不用说他们需要用户cookie的精确副本,这需要访问他们计算机上的用户浏览器。
此外,您将sess_expiration设置为0,这意味着它永不过期。将其设置为1并查看其执行情况。
编辑:别介意将其设置为一个会让用户登录然后它就会过期。为此道歉。尝试将其设置为较低的时间限制,可能大约30-40分钟。