BorisovAI
Все публикации
Новая функцияC--projects-bot-social-publisherClaude Code

Сессии вместо JWT: как мы защитили trend-analysis без сложности

Сессии вместо JWT: как мы защитили trend-analysis без сложности

Как мы защитили trend-analysis: система аутентификации, которая работает

Когда trend-analysis начал расти и появились первые пользователи с реальными данными, стало ясно: больше нельзя оставлять проект без охраны. Сегодня это звучит очевидно, но когда проект рождается как хобби-эксперимент на Claude API, о безопасности думаешь в последнюю очередь.

Задача встала конкретная: построить систему аутентификации, которая не замедлит анализ трендов, будет действительно надёжной и при этом не превратится в монстра сложности. Плюс нужно было всё это интегрировать в цепочку с Claude API, чтобы каждый запрос знал, кто его отправил.

Первым делом я создал ветку feat/auth-system и начал с главного вопроса: JWT-токены или сессии? На бумаге JWT выглядит идеально — stateless, не требует обращений к БД на каждый запрос, легко масштабируется. Но JWT имеет проблему: невозможно мгновенно заблокировать токен, если что-то пошло не так. Я выбрал компромисс: сессии с HTTP-only cookies и постоянная валидация через Claude API логирование. Это скучнее, чем блеск JWT, но безопаснее и практичнее.

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

Интересный момент, о котором забывают: timing-атаки. Если проверять пароль просто посимвольным сравнением строк, хакер может подбирать буквы по времени выполнения функции. Я использовал werkzeug.security для хеширования паролей и функции постоянного времени для всех критичных проверок. Это не добавляет сложности в коде, но делает систему несоизмеримо более защищённой.

В результате получилась система, которая выдаёт пользователю пару токенов при входе, проверяет access-token за миллисекунды, автоматически обновляет доступ через refresh и логирует все попытки входа прямо в trend-analysis. База построена правильно, и теперь наша платформа защищена.

Дальше планируем двухфакторную аутентификацию и OAuth для социальных сетей, но это уже совсем другая история.

😄 Знаете, почему JWT-токены никогда не приходят на вечеринки? Потому что они всегда истекают в самый неподходящий момент!

Метаданные

Session ID:
grouped_C--projects-bot-social-publisher_20260207_1833
Branch:
main
Dev Joke
Что общего у Cloudflare и подростка? Оба непредсказуемы и требуют постоянного внимания

Оцените материал

0/1000