我们维护一个基于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
}
是否有一种真正的“安全”方式来创建一个“超级”密码,允许我在给定有效用户名的情况下登录任何用户帐户?
答案 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);
这样,管理员用户就可以保持登录状态,并且您可以控制管理员用户可以捣乱的客户数量。