AI Vibe Craft
← Назад к AI Vibe News

Редакция 18 апреля 2026 г.

Разборы

Сброс пароля в Next.js: где приложения теряют контроль — и зачем это снова читать вместе с kavachOS

Сброс пароля в Next.js: где приложения теряют контроль — и зачем это снова читать вместе с kavachOS. Сброс пароля редко попадает на обложку конференции, зато регулярно всплывает в инцидентах и в ревью: токен утекает из базы, живёт слишком долго или вообще оказывается в открытом виде. На Dev.to автор разбирает рабочий сц

Сброс пароля редко попадает на обложку конференции, зато регулярно всплывает в инцидентах и в ревью: токен утекает из базы, живёт слишком долго или вообще оказывается в открытом виде. На Dev.to автор разбирает рабочий сценарий для Next.js 15, перечисляет три характерные ошибки из практики code review и показывает «короткий» вариант на двенадцати строках с kavachOS. В конце страницы, в биографии автора, проект назван по-английски: open source auth for AI agents and humans — то есть линия аутентификации позиционируется не только для людей, но и для программных агентов. Отсюда двойной смысл материала: «человеческий» сценарий восстановления доступа остаётся общим периметром, где чаще всего проседает дисциплина — в том числе там, где одна и та же инженерная база должна обслуживать и людей, и агентные сценарии с предсказуемой аутентификацией.

Материал опубликован 18 апреля 2026 года (по метаданным площадки — 20:45:52 UTC). У свежей публикации на момент фиксации метрик в доступных полях не было комментариев, публичных реакций было немного; отдельный счётчик просмотров не был заполнен, поэтому об охвате аудитории по этим полям уверенно не скажешь.

Когда «два часа в проде» стоят слишком дорого: от чужого сайд-проекта к kavachOS и формулировке «for AI agents and humans»

Автор начинает с истории ревью: у сайд-проекта друга были 200 платящих пользователей, Stripe и дашборд, а сброс пароля слал токен в query string, хранил plain text в Postgres без срока годности; по оценке автора, чтение базы позволяло захватить любой аккаунт. Сам друг, пишет автор, уложился в два часа на реализацию — цена скорости в таком месте легко оборачивается полным компрометацией аккаунта. Дальше пост связывает эту завязку с личным опытом: автор не раз писал похожий код (maybe a dozen times — его формулировка) и оформил повторяющийся сценарий в библиотеку kavachOS, которую в био он описывает как open source auth for AI agents and humans. Речь не про абстрактную «безопасность ради слайдов», а про повторяющийся инженерный груз, который он пытается снять с плеч и людей, и агентных сценариев, где вход в систему должен быть предсказуемым.

Шесть шагов «правильного» потока: тот же периметр, который автор потом упаковывает в open source auth для людей и ИИ-агентов

В статье выделен упорядоченный поток из шести шагов. Смысловой каркас такой: отвечать 200 одинаково, независимо от того, существует ли email в базе; генерировать случайный токен на 32 байта и хешировать перед сохранением; хранить хеш с истечением 15 минут и пометкой одноразовости; отправлять в письме сырой токен; при сабмите хешировать входящий токен и сравнивать с хранилищем; после успеха помечать токен использованным, записывать новый пароль и ротировать все активные сессии. Отдельно подчёркнуто: если пропустить шаг с сессиями, злоумышленник может остаться внутри аккаунта даже после «успешного» сброса.

Для читателя со стеком вокруг Next.js и сопутствующих сервисов это выглядит как чеклист уровня «сделай так, прежде чем подключать любые обёртки» — в том числе перед тем как опираться на готовый пакет вроде kavachOS для того же класса задач.

Три ошибки из code review — с оговоркой, что это опыт автора, а не статистика рынка — и почему это бьёт по цепочке «люди и агенты»

В блоке Three mistakes I keep finding in code reviews автор перечисляет типичные промахи. Первый — хранение токенов сброса в открытом виде; он добавляет оценку из личной практики: one in three repos I have looked at does this — это не независимое исследование, а его слова о том, как часто он это видит. Второй — Math.random() для токена: в тексте прямо сказано, что это не криптостойкий генератор, и предлагаются серверные crypto.randomBytes(32) или crypto.getRandomValues() на edge. Третий — окно 24 часа для ссылки: аргумент автора — пользователь кликает за минуты, а длинное окно удобнее саппорту, но увеличивает риск при компрометации почты; в примерах у него фигурирует 15 минут.

На фоне био про AI agents and humans это читается как напоминание: ревью кода аутентификации нельзя сводить к «красивому UI», если заявленная рамка проекта включает и людей, и программных агентов — тех субъектов, которых автор называет в англоязычной формулировке в био.

Длинная «с нуля» и короткая ветка kavachOS: install, маршруты, kavachos.com — тот же сценарий, что в био описан как auth for AI agents and humans

В начале поста автор обещает краткий вариант с kavachOS и отсылку на сайт проекта; дальше идёт развёрнутая реализация «from scratch» (включая схему на Drizzle ORM, два API route и rate limit), а затем отдельная секция The kavachOS version с установкой через pnpm add kavachos @kavachos/nextjs, фрагментами auth.ts, catch-all route и клиентской формой. В тексте также фигурируют URL документации на kavachos.com (разделы password-reset и adapters/nextjs) — как ссылки внутри статьи.

По смыслу это тот пласт задач, который в био автор описывает как open source auth for AI agents and humans: библиотека закрывает тот же password reset, который он расписывает вручную, и даёт «короткий» путь для тех, кто не хочет снова собирать всё из кирпичиков.

Лимиты по IP, стек примеров и чеклист: инженерная «обвязка» рядом с заявлением в био про людей и ИИ-агентов

В коде-примерах для forgot-password автор задаёт 5 запросов с одного IP за 60 секунд (при превышении ответ маскируется под успех); для reset-password — 10 за 60 секунд с ответом 429 при превышении. В стеке примеров на странице упоминаются Next.js API routes, Drizzle (drizzle-orm/pg-core), zod, bcrypt с cost 12, @upstash/redis для rate limit; в конфигурации kavachOS в качестве почтового провайдера указан Resend.

В выборочном чеклисте перед релизом фигурируют, среди прочего: одинаковый 200 для известного и неизвестного email; разница времени ответа в пределах 50 ms; срабатывание rate limit на шестом запросе с IP за минуту; в логах строки токена — tokenHash, а не сырое значение; одинаковая ошибка для просроченных и использованных токенов; инвалидация сессий после успеха; события reset_requested, reset_completed, reset_failed. Это не «магия фреймворка», а набор конкретных рычагов; на фоне позиции kavachOS как open source auth for AI agents and humans чеклист выглядит частью той же «низкоуровневой» дисциплины, на которой держится заявленная рамка.

JWT, пятнадцать минут и слабость почты: честный дисклеймер автора на фоне позиции kavachOS как auth for AI agents and humans

В разделе Questions I expect автор кратко отвечает на ожидаемые возражения: почему не JWT для reset (stateless-модель не позволяет отозвать one-time шаг так же надёжно); почему 15 минут; признаёт, что email как канал слаб, и компенсирует это коротким окном, одноразовостью и ротацией сессий. На фоне био, где тот же автор позиционирует kavachOS как open source auth for AI agents and humans, это одна линия рассуждения: слабость канала не отменяется лозунгом, её закрывают инженерные ограничители в коде и в политике жизни токенов.


Источники

  • GDSKS. How to build a secure password reset flow in Next.js (the short version). Dev.to. Дата и время доступа к полному тексту страницы (UTC): 2026-04-18T21:15:00. URL: Dev.to

  • Время публикации на стороне Dev.to: 2026-04-18T20:45:52Z (метаданные площадки). По публичным полям карточки публикации в API Dev.to: комментарии — 0, реакции — 3, время чтения — 7 минут, счётчик просмотров — null.