Утечка баз данных клиентов стоит бизнесу не только денег, но и репутации. По данным статистики, 40% инцидентов связаны с неправильной настройкой доступа.

Никогда не храните пароли пользователей в открытом виде. Даже если база данных будет скомпрометирована, злоумышленник получит только бессмысленные строки символов. Используйте алгоритмы с солью, такие как bcrypt или Argon2, которые делают подбор пароля вычислительно невозможным.
Скорость хеширования должна быть намеренно низкой. Это замедляет перебор паролей ботами. Например, настройка bcrypt с фактором 12 увеличивает время проверки одного пароля до 250 миллисекунд. Для атаки на базу из миллиона пользователей это потребует лет работы.

Сессия пользователя должна быть короткоживущей и автоматически обрываться. Если пользователь не активен более 15 минут, сервер должен принудительно завершить сессию. Это снижает риск перехвата токена при компрометации устройства.
Используйте HTTP-заголовки для передачи токенов. Не передавайте их в URL или полях формы, так как они могут остаться в логах браузера или прокси-серверов. Токены должны быть случайными строками длиной не менее 256 бит.
Одного пароля недостаточно для защиты критичных аккаунтов. Включите двухфакторную аутентификацию (2FA) для администраторов и пользователей с доступом к платежам. Это снижает риск успешной атаки на 99% случаев.
Используйте аппаратные ключи или приложения-аутентификаторы. SMS-коды менее безопасны из-за риска SIM-своппинга. Лучше всего подходят TOTP-коды из приложений вроде Google Authenticator или Яндекс.Токен.
Логирование входов должно быть детальным, но не содержать чувствительных данных. Записывайте IP-адрес, время входа, результат попытки и User-Agent. Это позволяет обнаружить аномалии: вход с нового устройства в 3 часа ночи.
Настройте алерты на подозрительную активность. Если один IP пытается войти более 5 раз за минуту, система должна заблокировать его автоматически. Регулярно анализируйте логи на предмет успешных входов из стран, где бизнес не работает.
Весь трафик между клиентом и сервером должен шифроваться по протоколу TLS 1.2 или выше. Без этого пароли передаются по сети в открытом виде и могут быть перехвачены. Убедитесь, что сертификаты обновляются автоматически и не истекли.
Использую HSTS (HTTP Strict Transport Security). Эта директива заставляет браузер всегда использовать HTTPS, даже если пользователь ввел адрес без протокола. Это исключает риск downgrading-атаки, когда злоумышленник принуждает браузер использовать незашифрованное соединение.
Даже при идеальной безопасности возможны ошибки. Настройте автоматическое резервное копирование базы данных ежедневно. Храните копии в географически удаленном месте, например, в облаке другого региона.
Проверяйте работоспособность восстановления. Раз в месяц восстанавливайте базу на тестовом сервере. Это гарантирует, что при инциденте вы сможете вернуть данные за часы, а не дни. Без этого резервные копии бесполезны.
Опишите задачу — подберём решение и рассчитаем стоимость за 5 минут.
Каталог проверенных IT-услуг для бизнеса: разработка, дизайн, DevOps, безопасность и аналитика. Работаем по договору по всей России.