V2.1.1 Password Security
Requirement:#
Verify that user set passwords are at least 12 characters in length (after multiple spaces are combined). (C6)
Explanation:#
Согласно этому требованию, организации должны проверять, что длина пароля пользователя составляет не менее 12 символов, но с учетом дополнительного требования: перед измерением длины пароля необходимо объединить несколько пробелов. Это означает, что последовательные пробелы в пароле не должны рассматриваться как отдельные символы при подсчете общей длины пароля.
Основные моменты этого требования:
User-set passwords: Это пароли, создаваемые и управляемые пользователями для доступа к своим учетным записям в приложении. Они могут отличаться от паролей, генерируемых системой.
Password length: Согласно данному требованию, минимальная длина пароля должна составлять 12 символов. Более длинные пароли, как правило, обеспечивают большую безопасность, поскольку увеличивают вычислительные усилия и время, необходимые злоумышленникам для их взлома.
Combining multiple spaces: Данное условие гарантирует, что при определении длины пароля не будут учитываться пробелы, идущие подряд в пароле. Например, если пользователь задает пароль "hello world", в котором между словами "hello" и "world" имеется несколько пробелов, то эти пробелы не должны учитываться отдельно при оценке длины пароля. Вместо этого их следует объединить, и длина пароля будет измеряться без учета этих лишних пробелов.
Объединение пробелов необходимо для того, чтобы предотвратить искусственное завышение длины пароля за счет добавления лишних пробелов. В отсутствие этого требования пользователь может создать пароль типа "password123" с большим количеством пробелов, который будет казаться длинным, но не обеспечит того же уровня безопасности, что и действительно длинный пароль.
Соблюдение этого требования позволяет обеспечить создание пользователями надежных и значимых паролей, что способствует повышению уровня безопасности и снижению вероятности успешных brute-force атак и попыток взлома паролей.
Remediation:#
Implement a password policy: Определите политику паролей, обеспечивающую минимальную длину пароля в 12 символов и включающую другие требования безопасности, такие как использование прописных и строчных букв, цифр и специальных символов. Избегайте использования общих или легко угадываемых паролей.
Ensure proper password storage: Храните пароли в защищенном виде, используя надежные алгоритмы хеширования и методы выделения. Никогда не храните пароли в открытом виде или в обратимом формате.
Validate and sanitize input: Перед хранением и обработкой паролей используйте проверку вводимых данных для обнаружения и удаления пробелов в начале и конце пароля.
Inform users: В процессе создания учетной записи или смены пароля четко разъясняйте пользователям политику в отношении паролей. Информируйте их о требованиях к минимальной длине и других правилах создания надежных паролей.
- Если пользователь устанавливает или обновляет пароль, не соответствующий требованиям, обеспечьте содержательную обратную связь. Проинформируйте пользователя о причине неудачи и объясните правила политики паролей, чтобы помочь ему создать пароль, соответствующий требованиям.
- Предложите пользователю создать новый пароль, отвечающий требованиям политики паролей.
- Рассмотрите возможность внедрения измерителя надежности паролей, чтобы помочь пользователям в режиме реального времени оценить надежность своих паролей и стимулировать их к созданию более надежных паролей.
В дополнение к реализации конкретных требований, упомянутых выше, приведем некоторые общие рекомендации по обеспечению безопасности паролей:
- Encourage the use of passphrases: Вместо пароля из одного слова разрешите пользователям использовать парольные фразы - более длинные комбинации слов, которые легче запомнить пользователям и сложнее взломать злоумышленникам.
- Implement multi-factor authentication (MFA): Внедрение или предложение опций MFA обеспечивает дополнительный уровень защиты учетных записей пользователей, что затрудняет взлом учетных записей, даже если злоумышленникам удается получить пароль.
- Regular password rotation: Поощряйте пользователей периодически менять свои пароли, особенно если существует вероятность нарушения безопасности или компрометации.
- Monitor for suspicious activity: Внедряйте механизмы обнаружения и реагирования на атаки методом перебора, блокировку учетных записей и другие подозрительные действия с паролями.
В этом примере реализовна функция validate_password, чтобы проверить, соответствует ли данный пароль требованиям не менее 12 символов после объединения нескольких пробелов. Функция register_user используется для регистрации пользователя, а функция change_password — для смены пароля, когда пароль проверяется на соответствие требованиям ASVS перед безопасным сохранением. Обратите внимание, что фактическое хранение паролей должно включать надежные методы хеширования и добавления солей, которые не включены в этот упрощенный пример.