Должен ли я по какой-либо причине разрешить Супер Администратору видеть пароль пользователя через пользовательский интерфейс? - PullRequest
1 голос
/ 07 ноября 2011

В настоящее время я разрабатываю приложение с 3 ролями: 1 для клиентов, 1 для сотрудников компании и еще одно для супер-администратора.

Полезно ли разрешать пользователям Super Admin просматривать / редактировать пароли пользователей через пользовательский интерфейс? Или это должно быть изменено только напрямую через БД?

ОБНОВЛЕНИЕ : Я использую членство в asp.net и MySQL. Поэтому в БД есть таблица с именем my_aspnet_membership , в которой хранятся два поля: Password и PasswordKey. Поле PasswordKey представляется зашифрованным паролем. Тем не менее, поле Пароль хранится в виде простого текста. Итак, может кто-нибудь сказать мне, почему это разработано таким образом, если это не хорошая практика? Спасибо всем за ваши ответы!

ОБНОВЛЕНИЕ : Для тех, кто спросил, действительно ли он хранит пароль в двух разных полях:

enter image description here

Ответы [ 6 ]

3 голосов
/ 07 ноября 2011

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

Что касается того, должен ли он быть изменяемым, конечно.

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

Учитывая это, единственный способ изменить пароль непосредственно в базе данных - это сначала зашифровать его перед вставкой,Это быстрее сделать через пользовательский интерфейс, связанный с шифрованием.

ОБНОВЛЕНИЕ

В ответ на ваше обновление вы должны указать в своем файле web.config, что парольформат должен быть хеширован:

<providers>
<add [...]
    passwordFormat="Hashed"
/>
</providers>

, как указано здесь:

http://msdn.microsoft.com/en-us/library/ff648345.aspx

2 голосов
/ 07 ноября 2011

Ни при каких обстоятельствах нет причины позволять кому-либо видеть пароль, которым он не владеет.

Обновление для обновления OP: Конечно, у меня нет способа узнать, почему ваша БД была разработана таким образом. С оптимистической точки зрения, он содержит простой пароль, так что если пользователь забывает свой пароль, он может быть отправлен ему по почте - плохое оправдание, но, к сожалению, распространенное. Лучшая альтернатива состоит в том, чтобы система отправляла им по почте только что сгенерированный временный пароль, который работает только для установки постоянного пароля (и не уничтожает текущий пароль до тех пор, пока не произойдет изменение).

1 голос
/ 07 ноября 2011

Ни одному пользователю не должно быть разрешено видеть открытый текст пароля любого другого пользователя.Пароль должен быть зашифрован по крайней мере, если не хешируется даже в базе данных.Вы МОЖЕТЕ разрешить супер-администратору изменять пароль любого пользователя, но разрешить ему видеть его в виде открытого текста запрещено.

РЕДАКТИРОВАТЬ: Вы абсолютно уверены, что поле пароля хранит пароль в виде открытого текста, в то время как существует другое поле пароля?Потому что для меня это похоже на «солевой» механизм.Где, пароль сначала шифруется одним ключом, а затем повторно шифруется с помощью поля пароля.

РЕДАКТИРОВАТЬ 2: Теперь я почти абсолютно уверен, что ваша база данных использует соленый пароль.Соленые пароли часто используются для повышения уровня безопасности базы данных.Для получения дополнительной информации о соли, проверьте это .

0 голосов
/ 07 ноября 2011

Вы должны сохранить все пароли, зашифрованные в БД. Не в открытом виде !!

0 голосов
/ 07 ноября 2011

Вы никогда не должны хранить пароль, как в любой базе данных.Всегда используйте хеш-функцию для сохранения пароля.

0 голосов
/ 07 ноября 2011

Вы всегда должны сохранять пароли в зашифрованном виде.Поэтому у вас нет никакой возможности показать суперадминистратору пароль другого пользователя.

...