← Все комнаты Путь «Первые шаги» →Путь «Защита (код)» →
НовичокЗащита (код) Код Осенний CTF

Политика паролей

Прогресс комнаты 0 / 4
Задание 1Введение

Цель: Реализовывать политику надёжных паролей и учитывать граничные случаи.

Напишите функцию password_strength(p), которая возвращает True, если пароль надёжный:

  • длина не меньше 12 символов;
  • есть строчная и заглавная буква, цифра и спецсимвол (любой символ, который не буква и не цифра);
  • пароль (без учёта регистра) не содержит подстрок password, qwerty, 123456, admin.

Иначе — False.

Задание 2Теория и инструменты

Политика паролей — набор правил: минимальная длина, разные классы символов, запрет популярных слов.

Современные рекомендации (NIST SP 800-63B) ставят длину выше «сложности» и советуют проверять пароль по базам утечек. Здесь мы реализуем классический вариант, чтобы потренировать работу со строками.

Инструменты

  • Python: str.islower(), isupper(), isdigit(), isalnum(), any(...)
  • JS: регулярные выражения, toLowerCase()

Больше теории — в разделе «Обучение: Защита (код)».

Задание 3Практика: напишите код

Примеры

Пример 1
password_strength("Tr0ub4dor\u00263xyz")
→ true
Пример 2
password_strength("short1!A")
→ false

Ещё 13 скрытых тестов.

solution
Ctrl+Enter — отправить Войдите, чтобы отправить

Пошаговый план — открывайте по одному шагу

  1. 1
    Сначала проверьте длину: меньше 12 — сразу False.

Подсказки — каждая до решения стоит −10 очков

Задание 4Как защититься

Храните пароли через bcrypt/argon2, ограничивайте число попыток входа и включайте двухфакторную аутентификацию.

Разборы участников

Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.