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

Блокировка учёток

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

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

Напишите lockout_users(events, limit). events — список [user, ok] по времени. Успешный вход обнуляет счётчик неудач. Пользователь блокируется, когда неудач подряд стало limit, и дальше остаётся заблокированным. Верните отсортированный список заблокированных.

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

Блокировка замедляет подбор пароля. Счётчик считает неудачи подряд и обнуляется после успешного входа.

Минус — злоумышленник может заблокировать чужую учётку. Поэтому часто используют временную блокировку или капчу.

Инструменты

  • Python 3 или Node.js
  • Встроенные тесты в редакторе

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

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

Примеры

Пример 1
lockout_users([["ann", false], ["ann", false], ["ann", false]], 3)
→ ["ann"]
Пример 2
lockout_users([["ann", false], ["ann", true], ["ann", false], ["ann", false]], 3)
→ []

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

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

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

  1. 1
    Храните счётчик для каждого пользователя.

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

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

Сочетайте блокировку с ограничением по IP, MFA и уведомлением пользователя.

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

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