如何为会员登录网站创建“超级管理”密码

时间:2011-08-30 16:44:25

标签: php mysql login salt

我们维护一个基于LAMP堆栈的网站,允许成员登录他们的个人资料。虽然我们有一个管理界面来处理大多数任务,但有时候“必须”以“成员”身份登录并查看他们看到的内容。

我们为会员提供了一个非常安全和彻底的腌制和验证登录流程,但我的想法是以下声明不太安全:

sql = SELECT * FROM userlogins WHERE username = :user

(run the users entered password through the salt process)
$userpasswordentered = undisclosed salt process of ($_POST['password']);

if($userpasswordentered == value retrieved from userlogins above OR $_POST['password'] == 'hardcodedpw') {

    log user in
}

是否有一种真正的“安全”方式来创建一个“超级”密码,允许我在给定有效用户名的情况下登录任何用户帐户?

1 个答案:

答案 0 :(得分:4)

我会实现某种“用户模仿”功能。所以基本上,从您的管理员帐户,您可以输入/搜索用户ID,然后调用“日志用户”代码,就好像该用户已登录。这将记录管理员用户,但他们现在将模仿客户按要求。

就个人而言,如果我有用户/编辑操作,那么代码会执行以下操作:

//check for an admin user
if ($current_user->role == 'admin')
    //admins have to specify customers to edit
    if (isset($_GET['id']))
        $user_id = $_GET['id'];
    else
        //if no customer is specified, return a 404
        http_404();
else
    //customers can only see their own details
    $user_id = $current_user->id;

//get the user details to edit
$user_to_edit = $repository->get_user($user_id);

这样,管理员用户就可以保持登录状态,并且您可以控制管理员用户可以捣乱的客户数量。