Prüfregel · RSC-SEC-057
Geheimnis über öffentliches Env-Präfix exponiert
Findet Variablen mit öffentlichem Bundler-Präfix (`NEXT_PUBLIC_`, `VITE_`, `REACT_APP_`, `PUBLIC_`, `EXPO_PUBLIC_` …), deren Name auf ein Geheimnis hindeutet — solche Werte landen fest im Client-Bundle.
Warum das zählt
Jeder Bundler hat ein Präfix, das „darf in den Browser“ bedeutet: `NEXT_PUBLIC_` bei Next.js, `VITE_` bei Vite (und damit bei Lovable und Bolt), `REACT_APP_` bei Create React App. Werte mit diesem Präfix werden beim Build fest in das JavaScript eingesetzt, das jeder Besucher herunterlädt.
Trägt so eine Variable dem Namen nach ein Geheimnis — `VITE_SUPABASE_SERVICE_ROLE_KEY`, `NEXT_PUBLIC_STRIPE_SECRET` —, ist das Geheimnis veröffentlicht. Der Name allein genügt als Nachweis; der Wert muss dafür nicht mehr gefunden werden.
Aus Source Maps ist das besonders gut sichtbar: Der Bundler ersetzt den Zugriff beim Build durch den Wert, der NAME verschwindet also aus dem Bundle — im rekonstruierten Originalquellcode steht er noch. Fix: Präfix entfernen, Zugriff über einen Server-Endpunkt kapseln und den Schlüssel rotieren.
Prüfstufe
So behebt ihr es
Präfix entfernen, Wert serverseitig nutzen und das Geheimnis rotieren.