Как создать «Суперадминистративный» пароль для входа пользователя на сайт - PullRequest
1 голос
/ 30 августа 2011

Мы поддерживаем веб-сайт, построенный на стеке 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 Ответ

4 голосов
/ 30 августа 2011

Я бы реализовал какую-то функцию "олицетворения пользователя". Таким образом, в основном из вашей учетной записи администратора вы можете ввести / выполнить поиск идентификатора пользователя, а затем вызвать код «войти в систему», как если бы этот пользователь вошел в систему. Это позволит выйти из системы администратором, но теперь он будет выдавать себя за другого. клиент по запросу.

Хотя лично, если у меня есть действие пользователя / редактирования, тогда код выполняет следующие действия:

//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);

Таким образом, пользователь с правами администратора остается в системе, и вы получаете возможность контролировать, сколько вещей клиента может испортить пользователь с правами администратора.

...