Переменные окружения и секреты
Вашему коду нужны API-ключи, URL базы данных и токены. Их нельзя коммитить в репозиторий. Как только секрет попал в историю git, он фактически публичен навсегда — удаление строки в более позднем коммите не убирает его из истории, а боты прочёсывают новые публичные репозитории в поисках утёкших ключей за минуты. Два правила далеко вас уведут:
- Держите секреты в файле
.envлокально и убедитесь, что.envесть в вашем.gitignore. - Задайте те же значения как переменные окружения в панели управления хостинга (или через CLI) для продакшена.
# .env (только локально — никогда не коммитьте это)
DATABASE_URL=postgres://localhost:5432/app
STRIPE_SECRET_KEY=sk_test_xxx
SESSION_SECRET=change-me
# Задайте продакшен-эквиваленты на хостинге
wrangler secret put STRIPE_SECRET_KEY
vercel env add STRIPE_SECRET_KEY production
Поддерживайте закоммиченный .env.example, перечисляющий имена (не значения) каждой переменной, чтобы и будущий вы, и AI знали, чего ожидает приложение. Обратите внимание на префикс sk_test_ выше — держите тестовые и боевые ключи чётко различимыми и никогда не оставляйте боевой ключ в локальном .env, который вы можете вставить в чат. Если вы когда-нибудь вставите секрет в чат или случайно закоммитите его — считайте его скомпрометированным и немедленно ротируйте: сгенерируйте новый ключ в панели провайдера, обновите его повсюду и отзовите старый. Ротация стоит вам пяти минут; утёкший URL базы данных может стоить всего, что есть в базе.