Greșeala #1 a vibe coderilor: scapi cheia API

Greșeala #1 a vibe coderilor: scapi cheia API

În prima săptămână de proiect, 80% dintre developeri au făcut deja o greșeală care le expune cheia. Iată cele 5 cele mai comune — și fix-ul pentru fiecare.

de echipa aihost.md··6 min citire
share:

Pe Anthropic / OpenAI / Supabase, cheia ta API e bani. La propriu. Drain pe cont neașteptat = 1000-5000$ overnight. Asta nu e teoretic — e ceva ce se întâmplă săptămânal în comunitatea developerilor care vibe-codează cu agenți AI.

Bot-uri scanează GitHub, Discord, StackOverflow și screenshot-uri publice non-stop. Cheia detectată în .env commitat ajunge într-o bază de date a atacatorilor în < 30 minute. La unele servicii primești email „cheia ta a fost expusă" — dar până atunci, billing-ul a și pornit.

Hai să facem astea vizibile, una câte una.

Cele 5 moduri în care îți scapi cheia săptămâna asta

1. Commit .env în git

Faci git add . fără să verifici. .env intră în repo. Crezi că-l ștergi cu un commit nou — NU FUNCȚIONEAZĂ. Git history păstrează blob-ul pentru totdeauna. GitHub indexează commit-uri vechi pentru bot-uri de scraping.

Fix: adaugă .env* în .gitignore ÎNAINTE de primul commit. Verifică cu git check-ignore .env.local. Dacă deja ai commitat o cheie, rotezi imediatgit rebase sau git filter-branch NU sunt suficiente, blob-ul rămâne accesibil în GitHub indefinit.

2. Lipești cheia în chat AI / Discord / StackOverflow

Cer ajutor. Lipești tot blocul cu DATABASE_URL real. Postul rămâne acolo. Inclusiv conversațiile cu ChatGPT/Claude direct — pot fi folosite pentru training per ToS.

Fix: înainte să lipești, înlocuiește cheia cu <REDACTED> sau sk-...xxx.

3. Screenshot din terminal cu cheie pe ecran

Faci poză la ecran ca să arăți un bug. În colțul terminalului — output-ul lui env. Postezi pe Twitter/Telegram. Atacatorul face zoom + OCR.

Fix: înainte de orice screenshot, clear && reset sau tab nou.

4. Prefix NEXT_PUBLIC_ pus greșit

Vrei să folosești cheia într-un component React. E undefined. Adăugi NEXT_PUBLIC_ și merge — fără să realizezi că tocmai ai pus cheia secretă în bundle JS livrat la browser. Oricine apasă F12 o vede.

Fix: orice componentă React care are nevoie de o cheie SECRETĂ trebuie să facă fetch la un API route (/api/foo) care rulează server-side. Niciodată NEXT_PUBLIC_ pentru chei sensibile.

5. Cheie scapată în error logs / Sentry

Throw error cu mesajul „Failed to call Anthropic with key sk-ant-...". Sentry / Datadog captează stack trace. Cheia ta e acum în log retention 30-90 zile.

Fix: niciodată chei în mesaje de eroare. Folosește console.error("Anthropic call failed", err.message), nu err brut. Configurează scrubbing pe pattern-uri sk-*, eyJ*.

Threat model rapid: ce te costă fiecare leak

  • ANTHROPIC_API_KEY scapată: 1000-5000$ overnight cu un script paralel.
  • SUPABASE_SERVICE_ROLE_KEY: bypass total RLS → data breach total în < 5 minute.
  • DATABASE_URL public: DROP/exfiltrate orice tabel.
  • GITHUB_TOKEN cu repo:write: cod rescris cu backdoors în < 10 minute.
  • BETTER_AUTH_SECRET: spoof oricărui user — atacatorul devine admin.

Setup defensiv minim (10 min one-time)

  1. .gitignore include .env, .env.local, .env.*.local
  2. Pre-commit hook cu gitleaks sau trufflehog — detectează automat pattern-uri de chei
  3. Spending limits setate în Anthropic + OpenAI dashboard (default e UNLIMITED — schimbă la 50-200$/lună)
  4. Niciodată cheia într-un screenshot, chat AI sau Discord public
  5. Pe Supabase: RLS active pe TOATE tabelele. Test cu cheia ANON.
  6. Permisiuni 600 pe fișiere cu chei (chmod 600 ~/.aihost/agent-keys.env)

Plan de incident response (5 minute)

Realizezi că ai scăpat o cheie. Ordinea contează:

  1. Rotează imediat cheia în dashboard. Cheia veche devine invalidă instant. Asta e PRIMUL lucru.
  2. Verifică log-urile/billing-ul. Dacă a fost folosită — contact support pentru fraud chargeback (Anthropic/OpenAI acceptă în primele 24h dacă demonstrezi leak).
  3. Update .env.local cu noua cheie pe toate mediile.
  4. Repar source-ul leak-ului — scoate din git, șterge tweet-ul, redactează postul.
  5. Lecție: ce a permis leak-ul? Adaugă fix permanent.

Pentru toate detaliile vizuale — diagramele celor 4 lumi (local dev / build / server / browser), tabelul complet NEXT_PUBLIC_ safe vs nu, glosarul celor 10 chei comune cu severity și anti-pattern gallery cu cazuri reale — vezi ghidul vizual complet despre chei API.

Pe aihost.md, containerul tău vine cu setup-ul defensiv by default: ~/.aihost/agent-keys.env cu permisiuni 600, .gitignore corect, separare clară între cheile agent și cheile aplicației, niciodată expuse la internet. Defaul-ul e safe — restul depinde de tine.

Vrei să construiești ce ai citit?

Mediul tău cu Claude Code, Next.js și Supabase e gata în 5 minute.

Începe acum