Проверка пароля по слабому списку паролей, который может содержать одиночные символы - PullRequest
0 голосов
/ 28 апреля 2020

1. В нашем продукте есть функция проверки пароля, которая проверяет введенную фразу по списку слабых паролей. Следующий метод удаляет части пароля, которые попали в этот список:

import org.apache.commons.lang.StringUtils;

private String removeContaining(final String passwd, final List<String> list) {
    String lpasswd = passwd.toLowerCase();
    for (final String element : list) {
        if (element != null) {
            lpasswd = StringUtils.remove(lpasswd, element.toLowerCase());  //removing the hits
        }
    }
    return lpasswd;
}

А затем проверяется остальная часть для компиляции с минимальной длиной и другими критериями. Как лучше реорганизовать этот метод, если запрещенный список может содержать одиночные символы?

Так, например, если список содержит «a» и «b», введенный пароль - «abc23b $ aa». это станет "c23 $". Или мы должны запретить нашим клиентам помещать однобуквенные слова в такие списки?

2. Изучив эту проблему, я нашел описание механизма обработки пароля Azure: https://docs.microsoft.com/en-us/azure/active-directory/authentication/concept-password-ban-bad#step -2-check-if-password-is-считается- забанен Из статьи:

Каждый забаненный пароль, найденный в пароле пользователя, получает одно очко. Каждый оставшийся уникальный персонаж получает одно очко. Пароль должен быть не менее пяти (5) баллов, чтобы его можно было принять. В следующих двух примерах предположим, что Contoso использует Azure AD Password Protection и имеет «contoso» в своем пользовательском списке. Предположим также, что в глобальном списке «пусто».

Пример: пользователь изменяет свой пароль на «C0ntos0Blank12»

После нормализации этот пароль становится «contosoblank12». Процесс сопоставления обнаруживает, что этот пароль содержит два запрещенных пароля: contoso и blank. Этот пароль затем получает оценку:

[contoso] + [пробел] + 1 + [2] = 4 балла. Поскольку этот пароль меньше пяти (5) баллов, он будет отклонено.

Но если в словаре содержатся "Contoso" и "cont", как будет рассчитываться общий балл (в сравнении с "contoso" или "cont")?

Спасибо.

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