Запись, сколько раз пользователю не удалось войти - PullRequest
1 голос
/ 14 февраля 2011

Как бы вы спроектировали свою базу данных, если бы, скажем, у вас была таблица с именем user:

User_Table: id, username, password, password_salt, email, email_salt

Где бы вы хранили, сколько раз им не удалось войти и в последний разим не удалось войти?

total_failed, last_failed_login_time

Я также хочу указать, подтвержден ли их адрес электронной почты или нет?

Каков наилучший способ (не обязательно нормализованный, так как это предполагает использование большого количества объединений) сделать это?Что вы предлагаете?

Ответы [ 5 ]

2 голосов
/ 14 февраля 2011

Я бы сохранил total_failed и last_failed_login_time на User_Table. Вы можете обновить его всякий раз, когда они не могут войти в систему. Я думаю, что email_validated также может храниться там, хотя я не уверен, что именно вы подразумеваете под этим.

1 голос
/ 14 февраля 2011

И total_failed, и last_failed_login_time - довольно странные поля для хранения. Обычно ошибки входа в систему используются для обнаружения атак на систему.

Но не будет Total failed просто подкрасться со временем до такой степени, что это будет лишь приблизительный показатель того, как долго и как часто данный пользователь получает доступ к системе, так как обычный пользователь иногда вводит свой пароль неправильно , Так что большие цифры в этом поле мало что скажут.

Last_failed_login_time, похоже, тоже не даёт особого значения, так как стирает любые предыдущие данные, которые могут быть вам интересны.

Может быть, я упускаю смысл отслеживать эти данные?

0 голосов
/ 14 февраля 2011

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

Вы можете создать таблицу, которая отслеживает имя пользователя, дату, когда была предпринята попытка входа, статусэтой попытки входа в систему (Успешно, пароль неверен, неизвестное имя пользователя и т. д.) и любой другой соответствующей информации, связанной с самой попыткой.Включение (попытка) имени пользователя было бы необходимо, поскольку идентификатор пользователя будет ПУСТО (NULL) для любых попыток, использующих неизвестные имена пользователей.

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

0 голосов
/ 14 февраля 2011

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

С точки зрения проектирования баз данных нет ничего плохого в хранении total_failed и last_failed_login_time в пользовательской таблице.Но с точки зрения сетевого администратора это может быть.

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

0 голосов
/ 14 февраля 2011

Вы можете сохранить оба этих поля как часть пользовательской записи.Единственное, что делает вас ненормализованным (до 5NF, в любом случае; вы нормализованы до 3NF) - это то, что вам нужно сделать last_failed_login_time обнуляемым.верно для email_validated.Может храниться как часть строки.

...