Философия безопасности входа в систему

Мне дали код другого разработчика, который создал некоторые политики безопасности входа в систему. Например, если вы попытаетесь войти в систему с именем пользователя, которое существует в базе данных, начнется запись количества неудачных попыток входа. Затем, когда он достигнет 3 попыток входа, он добавляет еще одну запись в журналы, но добавляет к LockedOut бит 1.

Вы, ребята, верите, что это хорошая политика безопасности? Разве кто-то, пытающийся получить доступ, не попробует ввести большое количество случайных имен пользователей и принудительно заблокировать доступ всех к своей учетной записи? Это кажется плохой философией безопасности.

Я бы подумал, что лучшей процедурой безопасности было бы заблокировать любого, кто сделал 3 попытки в соответствии с таблицей IP-адресов, которая отслеживает различные попытки пользователей и срок действия которой истекает в течение 30 минут или около того, чтобы предотвратить DDoS.

Как вы, ребята, разрабатываете безопасность входа в систему ?? Вот что в основном сделал этот разработчик:

if username is in database:
   if first login: increase fail-attempt counter.
   if second login: lock out username.
   else: don't let him in.
else:
incorrect password.

edit: Заключительная процедура:

public void ResolveTimeouts()
{
    if (data.Expire <= DateTime.Now)
    { // it will only delete ONE single entry from the database, 
      // that happens to be this user's IP
      // If and only if, The expiration date is older than right now.
        Delete(this.data);
        data.Attempts = 0;
    }
}


int uid = UserExists(username);
if(uid < 1){
  ResolveTimeOuts(); // this will delete IPs from table if expiration passed
  if(loginAttempts >= 3){
    "Fail login, you have been locked out for " + TIMEOUT + " minutes";
    ExtendExpiration(TIMEOUT);
  } else {
    IncrementAttempts();
    "fail login, incorrect username or password.";
  }
} else {
  if(authenticate(uid, password)){
    "Successfully logged in.";
  } else {
    // INSERT lock out specific username feature here.
    "failed login, incorrect username or password.";
  }
}
6
задан Dexter 17 January 2011 в 22:19
поделиться