Hemligheter: nycklar och lösenord till din app
En del appar behöver nycklar för att fungera — till exempel Klarna-uppgifter för en kassa. De hör inte hemma i koden. Under Hemligheter i projektet lägger du in dem, och här står också hur vi förvarar dem.

Behöver ditt projekt det här?
Hemligheter används av sajter och appar som har kod på servern: en PHP-sajt, eller en app som körs med Node — till exempel webbutiken med Klarna-kassa. En helt statisk webbplats kan inte använda dem, eftersom allt som ligger i webbläsaren går att läsa för vem som helst; sidan säger till om det gäller ditt projekt. Vanliga kontaktformulär behöver inga nycklar av dig: brevlådan de skickar från sköter Appentizer.
Lägg in en nyckel
Har du byggt från en mall listar sidan vilka nycklar mallen behöver och vilka som är obligatoriska. Välj Fyll i, eller skriv ett eget namn med versaler, siffror och understreck, till exempel KLARNA_USERNAME. Några namn är upptagna av Appentizer och går inte att använda: PORT, NODE_ENV, DATABASE_URL, SAJTENS_ADRESS och de vanliga namnen för databas och e-post som börjar på DB_, SMTP_ och MAIL_. Sidan säger till om namnet är upptaget. Ett projekt kan ha högst 50 hemligheter.
Slumpa fram det som ska vara slumpat
För nycklar som bara ska vara långa och hemliga, som en sessionsnyckel, finns Slumpa åt mig. Värdet skapas i din webbläsare, inte hos oss, och visas en enda gång — spara undan det om du behöver det igen.
Bekräfta med en kod
Att spara, byta eller ta bort en hemlighet kräver rollen Utvecklare eller högre och en färsk kod från din autentiseringsapp. Koden gäller i fem minuter. Alla i arbetsytan kan se VILKA nycklar som finns, men ingen ser värdena.
Värdet går aldrig att läsa tillbaka
När nyckeln är sparad visas bara namnet och när den senast ändrades. Det finns ingen funktion för att läsa värdet — inte för dig, inte för en kollega, inte för Oderlands support. Har du tappat bort en nyckel hämtar du en ny hos leverantören och väljer Byt värde.
Så förvarar vi dem
Värdet krypteras innan det sparas, med en nyckel som är bunden till just det projektet och just den hemligheten — det går inte att flytta en krypterad nyckel till ett annat projekt och läsa den där. I databasen finns bara den krypterade formen. I driftmiljön sköts krypteringen av ett separat nyckelvalv som databasen inte har nyckeln till.
Vem som aldrig ser dem
Byggassistenten har ingen väg till hemligheterna: den skriver kod som läser nyckeln ur miljön, men får aldrig se värdet, och en fil som ser ut att innehålla en nyckel vägrar sparas. Klistra aldrig in en nyckel i chatten: ett meddelande som ser ut att innehålla en nyckel eller ett lösenord skickas inte, och du får frågan att lägga in nyckeln här i stället. Kod som skriver ut hemligheterna på en sida stoppas innan den publiceras. Förhandsgranskningen får dem inte heller och har inget utgående nätverk — en betalning går därför inte att prova där. Händelseloggen visar att en nyckel lagts in, bytts eller tagits bort, och vid vilken publicering nycklarna användes, men aldrig värdet.
Nycklarna följer med vid publicering
En app som körs med Node får nycklarna som miljövariabler, och koden läser dem med process.env. En PHP-sajt får dem i filen appentizer/hemligheter.php på ditt webbhotell: servern kör filen och skickar den aldrig som text till en besökare, och den tas inte med i säkerhetskopiorna. Där står värdena i klartext, precis som i en WordPress-sajts wp-config.php — det är vad som krävs för att sajten ska kunna använda dem. Byter du eller tar bort en nyckel händer ingenting med den publicerade sajten förrän du publicerar igen; då ersätts hela uppsättningen, och en borttagen nyckel försvinner. Saknas en obligatorisk nyckel varnar publiceringssidan.