vibeblame

Безопасно ли ваше AI-приложение? Чеклист для приложений на Cursor, Claude Code и Codex

AI-инструменты генерируют код, который утекает секретами, открывает source maps и пропускает security headers. Что проверить в приложениях на Cursor, Claude Code или Codex — и как это исправить.

AI-инструменты — Cursor, Claude Code, Codex — отлично выдают работающее приложение на экран за минуты. С безопасностью у них хуже. Они оптимизируют под «оно запускается», а не под «это безопасно выставлять в интернет». Результат — предсказуемый набор дыр, который снова и снова всплывает в AI-сгенерированных проектах.

Это чеклист ровно для такой ситуации: вы собрали (или навайбкодили) приложение AI-инструментом и хотите проверить его перед деплоем — или сразу после.


Почему AI-код утекает секретами

Три причины, и они складываются:

  1. Он пишет кратчайший рабочий путь. На запрос «вызови Stripe API» модель часто вставит ключ прямо в компонент — потому что так меньше всего шагов до работающего демо. Оно запускается. И заодно отдаёт ваш секрет каждому посетителю.
  2. Он доверяет дефолтам. Сборщики по умолчанию генерируют source maps и пропускают security headers, а AI редко переопределяет эти дефолты, если явно не попросить.
  3. Он не видит ваш деплой. Модель понятия не имеет, на Vercel вы, на VPS или за CDN — поэтому не может рассуждать о том, что реально открыто в продакшене.

Всё это не повод избегать AI-инструментов. Это повод проверять результат. Ниже — четыре проблемы, которые стоит проверить в первую очередь.


1. Захардкоженные API-ключи во фронтенде

Это самая частая утечка в AI-коде. Модель кладёт секретный ключ в React-компонент, клиентский fetch или переменную NEXT_PUBLIC_ — и вот он уже в бандле, который скачивает каждый посетитель.

Поищите в собранном выводе, прежде чем ему доверять:

grep -rE "sk_live_|AIza|ghp_|xoxb-|Bearer " dist .next/static build 2>/dev/null
# Любое совпадение — это утёкший секрет: ротируйте его и уносите на сервер

Если нашли — ротация ключа обязательна, считайте, что он уже скомпрометирован. Затем перенесите вызов в серверный route или server action, чтобы ключ никогда не попадал в браузер.

Полный фикс: /guides/api-key-leaks


2. Source maps по умолчанию в проде

Большинство AI-сгенерированных проектов собираются с включёнными source maps. Это значит, что ваше «скомпилированное» приложение всё равно отдаёт исходный код — имена компонентов, логику, комментарии — любому, кто откроет DevTools.

curl -I https://yourapp.com/_next/static/chunks/main.js.map
# 200 = ваш исходный код публичен. 404 = хорошо.

Полный фикс: /guides/source-maps-production


3. Отсутствующие security headers

AI редко добавляет Content-Security-Policy или HSTS без запроса. Без них приложение открыто для XSS-инъекций и clickjacking. Проверьте, что вы реально отдаёте:

curl -sI https://yourapp.com | grep -iE "content-security-policy|strict-transport-security|x-frame-options"
# Пустой вывод = security headers нет

Полный фикс: /guides/security-headers


4. Слабый или отсутствующий TLS

Если вы задеплоились на Vercel, Netlify или Cloudflare Pages — TLS настроен, этот пункт можно пропустить. Риск появляется, когда AI-инструмент поднимает вас на своём сервере или голом VPS и не настраивает HTTPS как следует — оставляя вас на истёкшем сертификате, несовпадении домена или чистом HTTP.

echo | openssl s_client -connect yourapp.com:443 -servername yourapp.com 2>/dev/null | openssl x509 -noout -dates

Полный фикс: /guides/tls-ssl


Заметки по инструментам и платформам

  • Cursor / Claude Code / Codex — они редактируют ваш реальный репозиторий. Они с радостью вставят API-ключ прямо в код, чтобы фича заработала, — потому что это кратчайший путь к «оно запускается». Проверяйте любой дифф, который касается вызова API, fetch или env-переменной, перед тем как закоммитить.
  • Ваш хостинг (Vercel / Netlify / Cloudflare) — TLS и HTTPS здесь автоматические, поэтому проблемы с TLS редки. Ваши реальные риски — утёкшие ключи и дефолтные source maps из сгенерированного кода. Security headers всё равно добавлять вам.
  • Любой инструмент — переменные с префиксом NEXT_PUBLIC_ (или VITE_, PUBLIC_) публичны по определению. Никогда не прячьте за ними секрет — неважно, какой ассистент написал эту строку.

Как проверить приложение за 30 секунд

Прогнать все команды выше руками можно, но долго. Быстрее: вставьте задеплоенный URL в vibeblame. Он сразу проверит утёкшие ключи, открытые source maps, отсутствующие заголовки, проблемы с TLS и пробелы в SEO — и сгенерирует готовый AI-промпт с описанием каждой проблемы под ваш стек, чтобы вы могли вернуть его прямо в Cursor или Claude и пофиксить за один заход.

Безопасно ли ваше AI-приложение? Чеклист для приложений на Cursor, Claude Code и Codex | vibeblame