// docs / security guides / bolt.new checklist
Bolt.new security checklist: 23 items before ship
Bolt.new (StackBlitz WebContainer) runs your dev environment in the browser, generates full-stack JS in minutes, and publishes to Bolt hosting by default or to Netlify (Bolt docs). This checklist targets Bolt-specific risks: secrets that were safe in the dev container leak once the project is exported, Express CORS defaults are permissive, session cookies need explicit HttpOnly flags, and credentials pasted into the terminal or chat are hard to take back. 23 items across secrets, database, auth, headers, deployment, and Bolt-specific gotchas.
PRE = pre-deploy (audit your source). DEPLOY = at deploy time. POST = post-deploy verification.
Секреты и ключи API (5 шт.)
Веб-контейнер Bolt запускается в браузере; экспорт в GitHub или Netlify перемещает секреты из изолированного контейнера в общедоступный репозиторий.
- PRE — Never paste service-role keys into the Bolt terminal or chat. Anything you paste there is hard to take back. Keep keys in
.envor your host's environment settings instead. - PRE — Create a
.envfile, never hardcode secrets in code. Контейнер разработки Bolt прекрасно изолирует.env, но при экспорте в GitHub.envдолжен находиться в.gitignore. - PRE — Confirm
.gitignoreexcludes.env,.env.local,.env.*.local. Bolt обычно формирует это правильно, но проверьте перед экспортом. - DEPLOY — Set secrets in Netlify Environment Variables, not in code. Netlify → Настройки сайта → Сборка и развертывание → Среда. Добавьте туда свои ключи в пределах Production.
- POST — Run Secrets in JavaScript Bundles on the deployed URL. Если ключ достиг развертывания Netlify, сканирование найдет его.
Контроль доступа к базе данных (3 шт.)
Bolt обычно представляет собой каркас с Supabase или Convex. Оба имеют открытые по умолчанию режимы, требующие явных политик.
- PRE — If using Supabase, enable RLS on every public table. Bolt's scaffold might not include
ENABLE ROW LEVEL SECURITYor policies. Add both in the migration. - PRE — Write policies that validate user ownership. Каждая политика должна проверять
auth.uid() = user_idили эквивалент. В политиках, сгенерированных Bolt, это иногда отсутствует. - POST — Run a FixVibe scan on the deployed app. Check the Supabase Row-Level Security result: it shows any table an anonymous visitor can read with your public key.
Аутентификация и сеансы (4 шт.)
Bolt генерирует экспресс-аутентификацию или Next.js. Риск заключается в настройке файлов cookie и проверке токена.
- PRE — Ensure session cookies are
HttpOnly; Secure; SameSite=Lax. Bolt иногда создает файлы cookie без этих флагов. Проверьте или добавьте их вручную. - PRE — Check Bolt's generated auth handlers for server-side token verification. Если используется
getSession(), замените проверенным внутренним поиском. - PRE — Verify the sign-in redirect guard. Параметр
nextдолжен начинаться с/, а не//. Bolt иногда пропускает это; при необходимости добавьте его вручную. - POST — Test logout clears the session cookie. Войдите, выйдите, проверьте файлы cookie. Файл cookie сеанса должен быть удален при выходе из системы.
Заголовки HTTP и CSP (3 шт.)
Строительные леса Express/Next.js Bolt редко включают CSP. Статические хосты нуждаются в явной настройке.
- PRE — Add middleware for security headers if using Express. Bolt Express требует ручного промежуточного программного обеспечения для CSP, HSTS, X-Frame-Options.
- PRE — If using Next.js, ensure
src/middleware.tsexists with CSP. Bolt может создать каркас, но убедитесь, что логика nonce CSP верна. - POST — Run HTTP Security Headers on the deployed Netlify URL. Сканирование сообщает об отсутствии заголовков.
Гигиена развертывания (5 пунктов)
Bolt экспортируется в GitHub и Netlify. Оба требуют тщательной настройки.
- DEPLOY — Ensure Bolt exports include
.gitignorewith.envlisted. Убедитесь, что в репозитории GitHub нет файлов.envпосле экспорта. - DEPLOY — Set Netlify env vars via Site settings, not GitHub secrets. Переменные среды Netlify в состоянии покоя шифруются; Секреты GitHub предназначены для CI, а не для развертывания.
- DEPLOY — Audit the Netlify deploy log for secret echo. Если в журнале сборки выводится какая-либо переменная окружения, значит, она скомпрометирована.
- DEPLOY — Configure Netlify build command to not run
echo $SECRET. Проверьте свойpackage.jsonи создайте скрипты на наличие секретного вывода. - POST — Verify Netlify redirect for HTTP → HTTPS exists. Bolt приложения должны принудительно использовать HTTPS. Netlify может обеспечить это через настройки.
Bolt-специфичные ошибки (3 шт.)
Шаблоны, уникальные для потока экспорта веб-контейнера Bolt:
- WebContainer isolation is lost on export. Среда разработки Bolt надежно изолирует секреты, но после экспорта в GitHub вы несете ответственность за
.gitignoreи дисциплину env-var. - Treat the terminal and chat like a shared log. Don't paste credentials into either; put them in
.envor your host's environment settings. - Express
cors({ origin: '*' })is the default. Bolt's Express-шаффолд часто включает в себя разрешительный CORS. Замените наcors({ origin: 'https://yourdomain.com', credentials: true }).
Следующие шаги
Просмотрите general vibe coding security checklist, чтобы найти 51 предмета для перекрестных инструментов. См. step-by-step hardening для CSP, RLS и шаблонов аутентификации.
