Каков самый простой/наиболее безопасный способ позволить администраторам стать другими пользователями

У меня есть панель управления, которая позволяет администраторам вводить определенные критерии поиска о пользователе в целях модерации. Я почти боюсь признать это здесь из-за отрицательной реакции, которую я обязательно получу, но на этой странице администраторы могут искать пароли пользователей, чтобы они могли войти в систему как они для целей модерации. Так что, прежде чем вы порвете мне новый, позвольте мне сказать, что я ТОЛЬКО закончил хэширование всех паролей с помощью sha1 и уникальной соли!

Что, как говорится. Я хочу, чтобы администраторы могли «стать» пользователем или войти в систему как любой пользователь, которого они выберут.

Я ищу самый простой и безопасный способ, как это сделать. Пожалуйста, дайте мне знать любую информацию, которая может вам понадобиться от меня, чтобы вы могли лучше ответить на мой вопрос.

Заранее спасибо.


person LightningWrist    schedule 10.02.2011    source источник
comment
Я хотел бы пометить это как bad-idea, но это единственное огорчение, которое вы получите от меня. :-)   -  person CanSpice    schedule 10.02.2011
comment
Должны ли администраторы быть пользователями или просто быть той же ролью, что и пользователь?   -  person Sampson    schedule 10.02.2011
comment
Используйте систему разрешений, которая позволит администраторам имитировать разрешения пользователей, вместо предоставления администраторам доступа к паролям пользователей. Это то, что делает phpBB, и я думаю, что это довольно круто.   -  person BoltClock    schedule 10.02.2011
comment
очень кратко о деталях, необходимых для ответа на вопрос. возможно, изменение значений в сеансе для соответствия пользователю, а затем, возможно, нет   -  person    schedule 10.02.2011
comment
@BoltClock — пароли не используются. Это будет включать наследование идентификаторов пользователей или что-то в этом роде. @Jonathan Sampson - им просто нужно иметь возможность полностью контролировать свой контент. Удалите определенные сообщения и т. д. @CanSpice - спасибо, что пощадили меня :)   -  person LightningWrist    schedule 10.02.2011
comment
@LightningWrist: я не понимаю, разве вы не говорите, что администраторы могут искать пароли пользователей, чтобы они могли войти в систему как они?   -  person BoltClock    schedule 10.02.2011
comment
Лучше создать набор инструментов для администраторов, чтобы они могли вносить изменения, чем позволить им просто взять на себя роль этого человека. Таким образом, они могут вносить изменения, которые пользователь не может, и вы можете встроить отслеживание, чтобы увидеть, что делают администраторы.   -  person MrGlass    schedule 10.02.2011
comment
@BoltClock - я только что их хэшировал   -  person LightningWrist    schedule 10.02.2011


Ответы (2)


Я сделал это, когда разрабатывал сайт средней школы. Я разрешил персоналу «проксировать» другого пользователя. Однако они просто вводили имя пользователя, а затем он эмулировал сеанс для этого пользователя. Они никогда не получат доступ к паролю в любой момент.

У меня был объект $USER и объект $SESSION. $USER сохранил текущего активного пользователя, а $SESSION сохранил фактического пользователя, вошедшего в систему. Обычно они были бы одинаковыми, но если бы пользователь был проксирован как другой пользователь, то $USER->username не равнялось бы $SESSION->username, и это позволило бы мне отобразить баннер с надписью «Вы проксированы как ПОЛЬЗОВАТЕЛЬ, чтобы возобновить сеанс, нажмите здесь"

person Mitch Dempsey    schedule 10.02.2011
comment
...И если вы можете обнаружить сценарий, вы можете записать его возникновение, чтобы вы могли отслеживать подражания. Хороший звонок. - person Dan J; 10.02.2011
comment
Я полностью понимаю концепцию, но не совсем уверен, как мудро работать с этой структурой. Вы предлагаете создать специальную страницу только для администраторов, у которой есть поле ввода, в которое они вводят имя пользователя, под которым они хотят войти, и просто отправляют, и это изменит идентификатор сеанса? - person LightningWrist; 10.02.2011
comment
@LightningWrist - Да, есть страница, которую могут видеть только администраторы, и на которой есть текстовое поле, в котором они могут ввести имя пользователя, от имени которого они хотят использовать прокси. Затем я делаю запись в таблице прокси, в которой говорится, что администратор X проксируется как пользователь Y, а затем я использую $SESSION->username для проверки таблицы прокси, и если там есть запись, я использую это имя пользователя для создания объекта $USER. - person Mitch Dempsey; 10.02.2011

Невозможно обойти любой ущерб, который может нанести администратор, вошедший в систему как другой пользователь. Другими словами, на техническом уровне это невозможно. Вы должны быть уверены, что доверяете всем своим администраторам достаточно, чтобы дать им эту власть.

Я предполагаю, что это тот тип безопасности, о котором вы говорите. Как на самом деле реализовать такое поведение — это другой вопрос, и если вы это имели в виду, поправьте меня.

person Chris Laplante    schedule 10.02.2011
comment
Хорошо, лично я бы согласился с предложением webdestroya. - person Chris Laplante; 10.02.2011