Какие поля должна содержать пользовательская таблица с точки зрения безопасности / аутентификации? - PullRequest
0 голосов
/ 31 октября 2008

При разработке пользовательской таблицы должны быть поля с точки зрения безопасности / аутентификации пользователя для веб-приложения (.NET и SqlServer 2005)

Я пришел со следующими полями:

userID
username -- preferably email
passwordHash 
onceUsePassword -- to indicate that the password should be changed after login
alternativeContactEmail 
userStatusID -- FK to a lookup table with statuses like: active, diabled etc 
dateCreated
dateUpdated
lastPasswordUpdate
lastLogon
-- and then the rest like :forename, surname etc which are not of the interest in this question

Я что-то упустил?

Достаточно ли стандартного идентификатора (INT) для идентификатора пользователя или вместо него следует использовать GUID (идентификатор пользователя нигде не раскрывается)?

РЕДАКТИРОВАТЬ:

  • Я ограничен использованием .NET 1.1 (не спрашивай ...)
  • Информация о соли будет объединена с паролемHash
  • учетная запись будет разблокирована путем отправки временного одноразового пароля, сгенерированного системой, на адрес электронной почты пользователя (следовательно, поле OnceUsePassword)

Ответы [ 3 ]

3 голосов
/ 31 октября 2008

Почему бы просто не использовать встроенный поставщик членства в SQL, если вы все равно используете SQL Server? Это намного лучше, чем прокатить свой собственный, так как это было проверено многими людьми.

В любом случае, вам следует подумать о добавлении соляного поля в вашу таблицу.

Соление

Обновление: .NET 1.1? Я думаю, это отвечает на мой вопрос. Является ли ваша заявка на потребление широкой публикой? Если это так, вы можете добавить способ разблокировать свои учетные записи с помощью секретного вопроса.

2 голосов
/ 31 октября 2008

OnceUsePassword - чтобы указать, что пароль должен быть изменен после Войти

Если вам нужно так много объяснить, вам следует переименовать его. Что-то вроде «forceChangePasswordOnLogin».

1 голос
/ 31 октября 2008

Вы должны добавить поле "salt", чтобы использовать salting пароль , чтобы избежать атак по словарю с радужными таблицами , если ваша база данных когда-либо была взломана.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...