katlog.orgжурнал разработки Демо-каталогДемо
РШ003
Решение2 мин чтения

Безопасность маленькой системы

Маленькой библиотеке не нужна система уровня банка. Но ей нужно, чтобы чужой человек не вошёл в кабинет библиотекаря, а данные читателей не утекли. Какие решения для этого приняты.

Небольшие системы обычно ломают не изощрённые хакеры, а автоматические программы, которые перебирают пароли и ищут типичные ошибки на тысячах сайтов подряд. Поэтому главное — закрыть типичные двери.

Меньше дверей

  • Нет самостоятельной регистрации. Учётные записи создаёт только библиотекарь.
  • Мастер первого запуска закрывается навсегда после создания первого библиотекаря. Иначе тот, кто откроет свежую установку раньше хозяина, мог бы «настроить» её под себя.

Пароли и вход

Katlog: экран входа после неудачных попыток
После пяти неудачных попыток вход для пары «адрес + логин» закрыт на 15 минут — даже правильный пароль не пройдёт. На снимке — версия до доработки, с обычной ошибкой входа. Теперь при блокировке видно отдельное сообщение: «Слишком много неудачных попыток. Вход временно закрыт, попробуйте через N минут».
  • Пароль не короче 12 символов, хранится только в виде надёжного хеша. Даже при утечке базы паролей в ней нет.
  • Временный пароль от библиотекаря обязательно меняется при первом входе.
  • После пяти неудачных попыток пара «адрес + логин» блокируется на 15 минут. Счётчик хранится в базе, а не в памяти сервера, поэтому перезапуск его не сбрасывает.
  • Блокируется именно пара, а не весь логин: иначе злоумышленник мог бы нарочно заблокировать вход настоящему библиотекарю.
Katlog: окно «Временный пароль»
Временный пароль задаёт библиотекарь и передаёт лично; при входе читатель обязан его сменить.

Защита каждого действия

Все права проверяет сервер, а не страница в браузере. Каждое изменяющее действие несёт защитный код, который знает только открытая вкладка самого сайта. Это защищает от атак, когда чужой сайт пытается нажать кнопку от имени вошедшего пользователя.

Внутренние данные — например, дополнительные поля «только для библиотекаря» — вырезаются на сервере и в браузер читателя не попадают вовсе.

Обратная сторонаСлишком строгое правило тоже ошибка. Одно из защитных правил однажды заблокировало удаление записей — об этом статья «Ошибка 415». Защиту нужно проверять не только на атаках, но и на обычной работе.

Чего мы не обещаем

Katlog — эксперимент, а не сертифицированный продукт. Перед работой с настоящими читательскими данными библиотеке нужна собственная проверка: правовая и техническая.