以其他用户身份登录,例如更改会话,切换用户

时间:2018-10-23 14:36:18

标签: php apache

我有更改当前用户会话的代码,它是管理员的想法-以现有用户身份登录,然后再次返回。

为此,我将信息存储在会话和数据库中。因此,稍后我可以检查试图成为admin的用户是否具有会话变量-并且在DB中是相应的条目。因此,攻击者必须设置一个会话变量,然后再创建一个数据库条目-从这个角度来看,对我来说似乎是安全的。

用户流为: 管理员单击一个按钮,然后将他重定向到用户前端。然后在前端是一个按钮,可让您重新成为管理员。

问题是我完全不确定下面的代码,恐怕已经打开了安全漏洞,否则可能会出错。总体而言,这段代码对我来说很奇怪,使用PHP已有多年,但我从未碰过会话。

这真的可以正确地创建一个新会话吗?

//clear data in current session
foreach (array_keys($_SESSION) as $key) {
    unset($_SESSION[ $key ]);
}
//create new session id while old is active (takes care of collision)
$new_session_id = session_create_id();
//finish session
session_write_close();
//set new id
session_id($new_session_id);
//start with new id
session_start();

切换到用户时,更改会话后将执行以下代码:

 $_SESSION['mysessionkey'] = $admin_id;
//and more code making corresponding entry in db.

类似的问题(但过时的答案并不能帮助我-使我更加困惑):Can You Switch PHP Sessions In a Session?

1 个答案:

答案 0 :(得分:2)

如果我是你,我不会那样做。这很冒险。

如果要使用户切换,请使用laravel插件(如果使用laravel)。

如果您不使用Laravel,则可以为您的用户进行api调用,并使用api生成器可以创建一个切换系统,以您要登录的用户身份使用新令牌登录。

JWT是我用来执行此操作的api,并且我的userswitch正常工作。

好运