Sicherheit·v0
Sicherheitv0

API-Keys aus dem Client-Bundle entfernenv0

Keys im JavaScript-Bundle sind public. Angreifer scannen GitHub und Deploys 24/7. Ein exponierter Stripe-Secret oder OpenAI-Key leert dein Konto in Stunden.

rocket_launch

In v0 fixen

Vercel AI-Component- und App-Generator

Wie Cursor — App Router + Vercel-Env-Vars. Nie einen Key in einer `"use client"`-Komponente shippen.

Anderes Tool? Wähle deinen Stack:

Der Prompt für v0

Diesen Text exakt so in deinen v0-Chat kopieren und einfügen.

Regenerate my v0 component / page with these fixes applied:

CRITICAL: Move exposed API keys server-side immediately

1. CRITICAL: API keys are exposed in the frontend code. This is an immediate security risk.
2. Move all secret keys to server-side environment variables.
3. Create server-side endpoints that make API calls on behalf of the frontend.
4. Only public/anon keys should ever be in client-side code.
5. Rotate all leaked keys immediately in each provider dashboard.
6. Add .env* to .gitignore.

Warum das wichtig ist

Jedes AI-Coding-Tool hat beim Stripe-/OpenAI-/Supabase-Integrieren irgendwann den Secret-Key direkt in eine React-Komponente geschrieben. Die Komponente wird zum Browser ausgeliefert, der Browser lädt das JS-Bundle, der Secret ist für immer public — auch nach dem "Fix" haben Angreifer die das Bundle scrapten den alten Key noch.

Automatische Bots crawlen GitHub, npm, Vercel-Deploys und Lovable-Shares nach exponierten Keys. Zeit von "Key gepusht" bis "Key missbraucht": oft unter 30 Sekunden. OpenAI hat ein Team das darauf wacht und Keys automatisch rotiert — aber nur wenn die Detection vor dem Angreifer zuschlägt.

Das ist unser #1-Security-Finding in Lovable- und Bolt-Audits. Der Fix ist immer derselbe: Key in server-only Env-Var, Backend-API-Route die den Secret nutzt, Client ruft diese Route auf.

So nutzt du diesen Prompt in v0

  1. 1. Dein v0-Projekt öffnen.
  2. 2. Prompt oben mit Copy-Button kopieren.
  3. 3. In v0-Chat einfügen und senden.
  4. 4. Diff reviewen, Änderungen akzeptieren, neu deployen.
  5. 5. Fix mit der Checkliste unten verifizieren.

Typische Fehler vermeiden

  • error_outline`NEXT_PUBLIC_STRIPE_SECRET_KEY` nutzen — der Prefix machte es public. Jedes `NEXT_PUBLIC_*` shippt zum Browser.
  • error_outlineOpenAI direkt aus React-Komponente aufrufen — Key kommt mit JS-Bundle.
  • error_outline`.env` statt `.env.local` in Git committen — `.env` wird oft per Default getrackt.
  • error_outlineSupabase `service_role`-Key im Client — umgeht RLS und liest/schreibt alles.
  • error_outlineKey in API-Route shippen, aber bei Error `process.env` loggen und in Logs leaken.

Wie du prüfst ob der Fix geklappt hat

  • check_circleDevTools → Sources → nach dem Key-Wert suchen — muss 0 Treffer liefern.
  • check_circle`curl https://deinesite.com/ | grep "sk_live"` — liefert nichts für Stripe-Secret-Keys.
  • check_circleNach Exposure rotieren — alte Keys sind für immer kompromittiert, auch wenn "entfernt".
  • check_circleGitGuardian oder git-secrets im Repo einrichten für Pre-Commit-Leak-Detection.

Häufige Fragen

Unterschied zwischen Anon- und Service-Role-Supabase-Keys?expand_more
Der Anon-Key ist by Design public und vertraut auf RLS. Der Service-Role-Key umgeht RLS komplett — darf NIEMALS zum Client.
Woher weiss ich ob mein Key geleakt ist?expand_more
Provider-Dashboard auf ungewöhnliche Nutzung prüfen, Deployed-Bundle mit `curl URL | grep "sk_"` scannen, Public-GitHub-Repo durchsuchen falls gepusht.
Ist Git-History ein Problem wenn ich den Key gelöscht habe?expand_more
Ja — der Key ist noch in Git-History und Rotation ist der einzige echte Fix. `git filter-repo` für History-Purge, aber immer zuerst rotieren.

Alle 34 Prompts passend zu deiner v0-Site?

Pantra scannt deine Site in 10 Sekunden, erkennt den Stack und generiert genau die Prompts die passen — nur die du brauchst.

Site scannen

Ähnliche v0-Prompts