Vad är miljövariabler och hemligheter? En enkel guide
En miljövariabel är en namngiven inställning, som DATABASE_URL eller STRIPE_SECRET_KEY, som skickas till din app när den körs i stället för att skrivas in i koden. En hemlighet är en miljövariabel vars värde måste hållas privat: en API-nyckel, ett lösenord eller en signeringsnyckel. Om du håller dessa värden utanför koden kan du byta dem utan att redigera appen, använda olika värden för test och för riktiga kunder, och hindra att de läcker när du delar eller publicerar koden.
Varför det spelar roll när du bygger med AI
Så fort din app gör något användbart tillsammans med en annan tjänst, till exempel tar emot en betalning, skickar ett mejl eller anropar en AI-modell, behöver den en nyckel. AI-byggare ber om dessa nycklar med jämna mellanrum, och var nyckeln hamnar avgör om din app är säker.
I AI-byggda appar går två saker ofta fel:
- Nyckeln klistras in i chatten eller koden. Den hamnar då i chatthistoriken, projektfilerna och alla exporter eller repositorier. Vem som helst som ser den kan använda ditt konto.
- Nyckeln används i webbläsaren. Om koden som anropar Stripe eller OpenAI körs på sidan skickas nyckeln till varje besökare. Folk tittar, och automatiska skannrar letar efter exponerade nycklar hela tiden.
Genom att förstå miljövariabler kan du upptäcka båda problemen och be om rättelsen.
En vardaglig jämförelse: hotellets kassaskåp
Din apps kod är som hotellrummet. Gäster (och städerskor, och alla du ger ett nyckelkort) går igenom det. Du skulle inte lämna passet på skrivbordet.
Miljövariabler är kassaskåpet i rummet. Rummet vet att det finns ett skåp och hur man öppnar det när det behövs, men passet ligger inte framme. Och om du flyttar till ett annat rum, från din testmiljö till din riktiga webbplats, lägger du ett annat pass i det rummets skåp utan att möblera om.
Så fungerar det
Din kod refererar till ett namn, inte till ett värde. I JavaScript på en server ser det ut så här: process.env.STRIPE_SECRET_KEY. När appen startar fyller plattformen den kör på i värdet för namnet. Ändrar du värdet i plattformens inställningar, startar om eller distribuerar om, använder appen det nya värdet, utan någon kodändring.
Varifrån värdena kommer beror på var appen körs:
| Var den körs | Var värdena lagras |
|---|---|
| På en utvecklares dator | En lokal fil som oftast heter .env, som aldrig får committas till git |
| I en AI-byggares förhandsvisning | Projektets panel för hemligheter eller inställningar |
| På en hostingplattform | Plattformens inställningar för miljövariabler |
| I GitHub Actions eller annan automation | Tjänstens egna krypterade hemlighetslager |
Offentliga kontra hemliga variabler
Alla miljövariabler är inte hemliga. Det hjälper att sortera dem i två grupper:
| Typ | Exempel | Kan webbläsaren se den? |
|---|---|---|
| Offentlig konfiguration | Webbplatsnamn, publikt analys-ID, Stripes publika nyckel, funktionsväxlar | Ja, det är helt okej |
| Hemligheter | Stripes hemliga nyckel, API-nyckel till OpenAI eller Anthropic, databasens anslutningssträng, nyckel till e-postleverantör, signeringsnyckel för webhooks | Aldrig |
Webbramverk gör den här uppdelningen tydlig. I Vite tas bara variabler vars namn börjar med VITE_ med i kod för webbläsaren. I Next.js är prefixet NEXT_PUBLIC_. Det är en säkerhetsfunktion: allt med de prefixen hamnar i filerna som varje besökare laddar ner, så en hemlighet får aldrig ha något av dem.
Ett genomgånget exempel: en AI-knapp för sammanfattning
Du vill ha en knapp “Sammanfatta den här anteckningen” som anropar en AI-modell.
Den osäkra versionen: knappens kod, som körs i webbläsaren, anropar AI-leverantören direkt med API-nyckeln inskriven i koden. Det fungerar i förhandsvisningen. Men det betyder också att vem som helst kan öppna webbläsarens utvecklarverktyg, kopiera nyckeln och köra upp en räkning på ditt konto.
Den säkra versionen:
- Du skapar nyckeln hos AI-leverantören och lagrar den som en hemlighet med namnet
OPENAI_API_KEY(eller liknande) i projektinställningarna. - Backend får en route,
POST /api/summarise, som läserprocess.env.OPENAI_API_KEY, kontrollerar att användaren är inloggad och anropar leverantören. - Knappen anropar din route, inte leverantören. Webbläsaren ser aldrig nyckeln.
- Du lägger till samma hemlighet i den publicerade appens inställningar och distribuerar om, så att den live-publicerade webbplatsen också har den.
Mönstret, där webbläsaren anropar din server och servern håller nyckeln och anropar tjänsten, gäller för betalningar, e-post, kartor och all annan betald API. Guiden om hur du använder LLM-API:er går djupare på AI-fallet.
Viktiga begrepp
.env-fil: en textfil medNAMN=värde-rader som används i lokal utveckling. Lägg den i.gitignoreså att den inte committas..env.example: en kopia med namnen men utan riktiga värden, som committas så att andra vet vilka variabler som ska sättas.- Rotera: byt ut en hemlighet mot en ny och återkalla den gamla.
- Omfattning / behörigheter: många leverantörer låter dig skapa nycklar som bara kan göra vissa saker. En nyckel som bara kan skicka mejl är mindre farlig än en som kan allt.
- Test- och live-nycklar: leverantörer som Stripe ger separata nycklar för test och för riktiga pengar. Använd testnycklar tills du lanserar.
- Signeringshemlighet: en hemlighet som används för att kontrollera att ett meddelande, till exempel en webhook, verkligen kommer från avsändaren.
Vanliga misstag och missuppfattningar
- “Mitt repositorium är privat, så nycklar i det är okej.” Privata repositorier delas, forkas, exporteras och klonas till datorer. Nycklar hör ändå inte hemma där. Om du kopplar ett projekt till GitHub, kontrollera att ingen
.env-fil följer med. - “Jag tog bort den, så den är borta.” Git sparar historik och chattloggar sparar meddelanden. Om en nyckel någon gång exponerats, rotera den.
- Att använda ett offentligt prefix på en hemlighet.
VITE_OPENAI_KEYlägger din nyckel i webbläsarens paket. - Att glömma distribuera om. Att ändra en variabel i inställningarna börjar oftast gälla först när appen startat om eller publicerats igen.
- En nyckel för allt. Separata nycklar för test och live, och per app, gör det möjligt att återkalla en utan att förstöra resten.
- Ingen gräns för kostnader. För betalda API:er, ange en budget eller gräns i leverantörens instrumentpanel, ifall en nyckel läcker.
Vad du ska be din AI-byggare om
- “Läs den hemliga Stripe-nyckeln från en miljövariabel som heter
STRIPE_SECRET_KEY. Använd den bara på servern.” - “Se till att ingen hemlighet används i kod på klientsidan eller får ett prefix
VITE_/NEXT_PUBLIC_.” - “Skapa en
.env.examplesom listar alla variabler appen behöver, utan värden, och se till att.envär git-ignorerad.” - “Kontrollera de byggda frontend-filerna efter strängar som ser ut som API-nycklar.”
Vår säkerhetschecklista för AI-byggda appar tar upp hemligheter tillsammans med de andra kontrollerna som är värda att göra före lansering.
Hemligheter på Mythex
På Mythex är hemligheter projektets miljövariabler som injiceras både i förhandsvisningssandlådan och i din publicerade app. Du lägger till dem under projektinställningar → Secrets eller med /secrets i chatten, och när agenten behöver en nyckel visar den ett kort för hemligheter i chatten, så att värdet hamnar i ett formulärfält i stället för i meddelandeloggen. Om du ändrar en hemlighet för en live-app, publicera igen så att deployen tar upp den. Projektexporter utelämnar hemligheter, och importerade .env-filer rensas så att du lägger till dem på nytt i inställningarna. Se miljövariabler och hemligheter och hemligheter i chatten i dokumentationen.
Frågor
Vad är en miljövariabel?
En miljövariabel är en namngiven inställning, till exempel STRIPE_SECRET_KEY eller DATABASE_URL, som ges till ett program när det körs i stället för att skrivas in i koden. Samma kod kan då använda olika värden i utveckling och produktion.
Vad är skillnaden mellan en miljövariabel och en hemlighet?
En hemlighet är en miljövariabel vars värde måste hållas privat, till exempel en API-nyckel, ett databaslösenord eller en signeringsnyckel för webhooks. Andra miljövariabler, som ett webbplatsnamn eller en funktionsväxel, kan vara offentliga.
Är det säkert att lägga API-nycklar i mitt frontend?
Nej. Allt i frontend-koden laddas ner till varje besökares webbläsare och kan läsas av vem som helst. Hemliga nycklar får bara användas på servern, och webbläsaren ska anropa din server, som sedan anropar leverantören.
Vad ska jag göra om min API-nyckel läcker?
Återkalla eller byt ut den hos leverantören direkt, skapa en ny, uppdatera den där din app lagrar hemligheter och distribuera om. Att bara ta bort nyckeln från koden eller chatthistoriken räcker inte, eftersom kopior redan kan finnas.