~/VibeHandbook

Глава 18 · 03

Секреты и API-ключи: ловушка открытого ключа

Секрет — это всё, что даёт доступ: API-ключи, пароли от базы, токены платёжных провайдеров, ключи подписи. Самая частая — и самая дорогая — ошибка vibe coding заключается в том, чтобы один из них утёк.

Две ловушки ловят людей постоянно:

  • Секреты в клиентском коде. Всё, что находится в вашем фронтенде (JavaScript, который выполняется в браузере), — публично. Пользователи могут открыть dev tools и прочитать это. AI, которого попросили вызвать API из React-компонента, с радостью вставит ваш секретный ключ прямо туда — и теперь любой, кто зайдёт на ваш сайт, может его скопировать и накрутить вам счёт. Секретным ключам место на сервере, а не в коде, который уходит в браузер.
  • Секреты в репозитории. Ключ, захардкоженный в файле, попадает в коммит git. Даже если вы потом его удалите, он навсегда останется в истории git, а боты сканируют публичные репозитории ровно на это в течение нескольких минут после push.

Правильный дом для секрета — это переменная окружения (env): значение, которое подаётся приложению во время выполнения и полностью держится вне кода:

// VULNERABLE: ключ в исходниках, попадёт в коммит git
const stripe = new Stripe("sk_live_51H8xQ2eZvK...");

// SAFE: ключ читается из окружения, никогда не пишется в коде
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

Добавьте .env.env.local, и т. д.) в свой .gitignore до того, как напишете хоть один секрет. Если ключ всё-таки попал в код или историю, считайте его сгоревшим: ротируйте его (сгенерируйте новый и отзовите старый) — удалить строку недостаточно, потому что старый ключ всё ещё действителен и всё ещё гуляет где-то снаружи.

Хотите офлайн-версию?

Получите PDF + EPUB + скачиваемую библиотеку промптов + обновления версий.

$ Получить PDF — $39