Artikler · Egne systemer med AI · 13 min. læsning
Vibe coding og sikkerhed: tjekliste og prompt til dit eget projekt
Det virker, og alle er glade. Så en dag ser du noget, som ikke burde være der. Her er, hvad du kan gøre, før det sker.
Af Martin Egesø · Udgivet
Kort svar
AI kan bygge en app på en weekend, men at den virker, betyder ikke, at den er sikker. Veracode fandt i 2026, at kode fra over 100 sprogmodeller klarede sikkerhedstesten i 56 % af opgaverne. De mest almindelige fejl er hemmelige nøgler i åben kode, manglende adgangskontrol og indstillinger, der bare får det til at virke. Tjek, hvor koden og data ligger, slå to-faktor til, og kør en sikkerhedsprompt på en kopi af projektet.
I artiklen 13 afsnit
- Hvorfor virker det, men er alligevel ikke sikkert?
- Hvad er det typiske, der går galt?
- Hvad er vigtigt, når koden ligger på GitHub og Vercel?
- Hvor ligger koden og dataene, og hvem har adgang?
- Hvad hvis softwaren selv bruger AI?
- Kan en hacker komme ind, selv med kodeord?
- Hvad har jeg selv gjort med martinegesoe.dk og SPOR?
- Tjekliste til dit eget vibe coding-projekt
- Prompt til at teste sikkerheden i dit eget projekt
- Hvad sker der, hvis I ikke tjekker?
- Hvordan kan jeg hjælpe?
- Hvad kan I gøre nu?
- Ofte stillede spørgsmål
Det vigtigste
- Kode fra AI virker næsten altid, men klarede kun sikkerhedstesten i 56 % af opgaverne i Veracodes test fra 2026.
- Tre fejl går igen: nøgler i åben kode, login uden adgangskontrol og indstillinger sat til "det virker".
- Vælg EU-region, ejer konti selv, og vid, hvilke data der sendes til AI-tjenester.
- To-faktor på GitHub, hosting, database, mail og domæne beskytter mod et stjålet kodeord, men ikke mod fejl i koden.
- Tjeklisten og prompten nederst kan bruges på dit eget projekt. Tilpas dem, og kør dem kun på en kopi.
Hvorfor virker det, men er alligevel ikke sikkert?
AI-genereret kode er i dag næsten altid kode, der kører. Sikker kode er noget andet. Veracode testede over 100 sprogmodeller i 2026, og i gennemsnit klarede de sikkerhedstesten i 56 % af opgaverne. Omkring 44 % af opgaverne gav kode med en kendt sårbarhed, og tallet har knap flyttet sig på et år (Veracode, 2026 GenAI Code Security Report). Mod XSS, en angrebsmåde hvor en fremmed får din hjemmeside til at køre hans kode, svigtede AI i 85 % af tilfældene (SD Times om rapporten).
Tallene er ikke en sandsynlighed for, at lige dit projekt er usikkert. Veracode har testet isolerede kodeopgaver og ikke et helt system i drift. Men de viser det vigtige: At koden virker, fortæller ikke, om den er sikker. Det gør en test kun, hvis du selv beder om den.
Hvad er det typiske, der går galt?
Tre fejl går igen i projekter, der er bygget hurtigt med AI:
- Hemmelige nøgler ligger offentligt. En API-nøgle er en adgangskode, som programmer bruger til at tale sammen. Kommer den ind i koden på GitHub eller i den kode, som browseren henter, kan fremmede bruge den på din regning. Er en nøgle først lagt ud, skal den skiftes, også selv om du sletter den bagefter. GitHub har en funktion, der leder efter kendte nøgler i koden (GitHub, secret scanning), men den fanger ikke alt.
- Login er ikke det samme som adgangskontrol. Et login siger, hvem du er. Det siger ikke, hvad du må se. Hvis en bruger kan ændre et tal i adressen og se en andens data, er login ikke nok. OWASP, der samler de mest almindelige sikkerhedsfejl, har brudt adgangskontrol som nummer ét på sin liste fra 2025 (OWASP Top 10:2025).
- Indstillinger er sat til "det virker". Værktøjet vælger det, der får appen til at køre: åbne databaser, ingen grænse for forbrug, ingen logning. Det er også en kategori på OWASP's liste.
Næsten alle tjenester bruger en regel, som du skal kende: Variabler, der begynder med NEXT_PUBLIC_ i Next.js, bliver lagt ind i den kode, som browseren henter, og kan altså læses af alle (Next.js, dokumentation). Lægger du en hemmelig nøgle der, er den ikke hemmelig mere. Andre værktøjer har tilsvarende regler.
Et tænkt eksempel
En virksomhed bygger et værktøj, der laver rapporter ud fra kundedata. Det virker, og alle er glade. Tre uger senere opdager en medarbejder, at nøglen til AI-tjenesten ligger i koden på GitHub, og at regningen er tidoblet. Alle detaljer er tænkte.
Er det regningen, der bekymrer dig mest, så læs AI-bygget app: fem ting at tjekke, før den går live. Her handler det om sikkerheden.
Hvad er vigtigt, når koden ligger på GitHub og Vercel?
GitHub og Vercel er to steder, hvor mange AI-byggede projekter ender. GitHub opbevarer koden, og Vercel kører den. Den, der kan ændre koden på GitHub, kan i praksis også ændre det, der kører. Tabellen viser, hvad du skal spørge om.
| Sted | Spørg | Hvis du ikke kan svare |
|---|---|---|
| GitHub | Er repository'et privat? Hvem har adgang? Er der to-faktor på alle konti? | Fremmede kan læse koden, eller en stjålet konto kan ændre den. |
| Kodens historik | Har der nogensinde ligget en nøgle i koden? | En slettet nøgle ligger stadig i historikken og skal skiftes. |
| Vercel eller anden hosting | Ligger nøgler som hemmelige indstillinger og ikke i koden? Kan test og produktion adskilles? | Test og rigtige data blandes, og nøgler kan lække. |
| Udrulning | Hvem kan sende ny kode i produktion, og kræver det et tjek? | En fejl eller en angriber kan ændre jeres live-system uden, at nogen ser det. |
En nøgle skal ligge som en hemmelig indstilling hos hosting-tjenesten og aldrig i koden. Er du i tvivl om, hvilken indstilling der er hemmelig, så spørg AI-værktøjet direkte og bed det forklare, hvor hver nøgle bliver brugt.
Hvor ligger koden og dataene, og hvem har adgang?
Der er tre steder at kigge: koden, databasen og de tjenester, som koden sender data til. Spørg om hvert sted:
- Hvilket land eller hvilken region ligger det i? Mange tjenester kan vælges med en EU-region. Det skal du vælge aktivt, for standarden er ikke altid EU.
- Hvem ejer kontoen? Det skal være jer og ikke en tidligere udvikler eller et AI-værktøjs egen konto.
- Er der en databehandleraftale, hvis tjenesten behandler persondata for jer? Se ChatGPT og GDPR og seks ting, før AI bygger noget.
Mange tjenester er amerikanske selskaber, selv om data ligger i EU. Det betyder ikke automatisk, at noget er forkert, men du skal vide det og kunne forklare det. Jeg er ikke jurist, og en EU-region er ikke i sig selv det samme som at overholde GDPR.
Hvad hvis softwaren selv bruger AI?
Hvis dit værktøj analyserer data, laver billeder eller genererer rapporter ved hjælp af en AI-model, sendes dine data til modellen. Så skal du kunne svare på tre ting:
- Hvad bliver sendt? Kun det nødvendige, og ikke for eksempel CPR-numre eller sundhedsoplysninger.
- Hvor og hos hvem bliver det behandlet? Hvilken udbyder, hvilken region, og bruger udbyderen jeres data til at træne modeller?
- Hvem kan se resultatet? Både dem, der må, og dem, der ikke må.
AI-forordningen stiller krav, men de afhænger af, hvad softwaren bruges til, og hvilken rolle I har. De fleste små interne værktøjer er ikke højrisiko, men der kan gælde krav om at oplyse, at brugeren taler med AI, og om at medarbejdere har tilstrækkelig AI-forståelse (artikel 4). Se tidslinjen for AI-forordningen, artikel 4 og hvornår kunden skal have besked. Den officielle tekst står på artificialintelligenceact.eu, og Digitaliseringsstyrelsen samler vejledning på digst.dk. Spørg en jurist, hvis du er i tvivl om, hvad der gælder for netop jeres værktøj.
Kan en hacker komme ind, selv med kodeord?
Ja. Et kodeord alene beskytter ikke, fordi det kan stjæles, gættes, genbruges fra en anden tjeneste eller snydes ud af en medarbejder med en falsk mail. Og login hjælper ikke, hvis en fejl i koden lader en bruger se andres data, eller hvis en nøgle ligger åbent.
To-faktor-godkendelse betyder, at du skal bevise, hvem du er på to måder, fx med kodeord og en kode fra en app på telefonen. Så er et stjålet kodeord ikke nok. OWASP anbefaler flerfaktorgodkendelse og peger på, at nogle metoder er stærkere end andre. En sms-kode er bedre end ingenting, men en app eller en nøgle (passkey) er stærkere (OWASP, Multifactor Authentication Cheat Sheet). Slå det til på de konti, der betyder mest: GitHub, hosting, database, mail og domæne. Der beskytter det både koden og de nøgler, som alt andet hænger på. Har din egen software et login, så kræv det til brugerne også, hvis den indeholder noget, der ikke må komme ud.
Hvad har jeg selv gjort med martinegesoe.dk og SPOR?
Jeg bygger selv med AI, så jeg har brugt tjeklisten på mine egne systemer. Det er ikke en garanti, men en beskrivelse af, hvad jeg har gjort.
- Hjemmesiden martinegesoe.dk er en statisk hjemmeside uden database og uden login. Der er ikke noget at bryde ind i, og målingen starter først, når du har sagt ja til den.
- SPOR er mit system til at holde styr på virksomhedens AI. Der er to-faktor for alle, data ligger i EU (Frankfurt), og kunders data er adskilt fra hinandens i databasen, ikke kun i skærmbilledet. De hemmelige nøgler ligger som hemmelige indstillinger og ikke i koden.
- Jeg lod en AI-gennemgang kontrollere koden efter OWASP's standard, den samme, som artiklen henviser til. Det er ikke en uafhængig test. Gennemgangen fandt blandt andet en fejl i, hvordan ny kode sendes i produktion, og en fejl i, hvordan AI-forbrug blev kontrolleret. Jeg har rettet dem i koden og skrevet tests, der fejler, hvis fejlen kommer tilbage.
Du kan læse mere om, hvor data ligger, og hvad SPOR ikke indeholder, på Din tryghed. SPOR lover ikke compliance, og jeg er hverken jurist eller revisor.
Tjekliste til dit eget vibe coding-projekt
Gå listen igennem, før et projekt får rigtige data eller rigtige brugere. Hvert punkt kan tjekkes på få minutter.
| Tjek | Sådan ser du det |
|---|---|
| ☐ Repository'et er privat | GitHub: Settings, General, nederst. Skal være Private, hvis koden ikke er til alle. |
| ☐ Ingen nøgler i koden | Søg i projektet efter "key", "secret", "token" og "password". Tjek også historikken. |
| ☐ Nøgler ligger som hemmelige indstillinger | I hostingtjenesten under Environment Variables, ikke i filer, der sendes til GitHub. |
| ☐ Ingen hemmelig nøgle i browserkoden | Variabler med NEXT_PUBLIC_ og lignende er synlige for alle. Åbn siden, tryk F12, og søg i filerne. |
| ☐ To-faktor på GitHub, hosting, database, mail og domæne | Gå ind i hver kontos sikkerhedsindstillinger, og tjek, at to-faktor er slået til. |
| ☐ Adgangsregler på alle tabeller med data | Test som en bruger uden login og som en bruger med en anden rolle. Kan de se noget, de ikke må? |
| ☐ Én kunde kan ikke se en andens data | Opret to testbrugere i to forskellige virksomheder. Prøv at åbne den enes data som den anden. |
| ☐ Dataene ligger i EU | Tjek regionen i hosting og database. Tjek, hvilke tjenester der modtager data. |
| ☐ Forbrugsloft og alarm | Sæt et månedligt loft hos AI-udbyderen og hosting. Få en mail, når 80 % er nået. |
| ☐ Test og rigtige data er adskilt | Test aldrig med kundedata. Brug opdigtede data. |
| ☐ Afhængigheder bliver overvåget | Slå Dependabot eller en tilsvarende advarsel til på GitHub. |
| ☐ Du ved, hvem der ejer det, og hvad du gør, hvis noget går galt | Skriv ned: hvem ringer vi til, hvilke nøgler skifter vi først, og hvordan lukker vi appen? |
Prompt til at teste sikkerheden i dit eget projekt
Her er et udkast til en prompt, du kan give til et AI-kodeværktøj som Claude, ChatGPT eller Cursor. Den beder værktøjet om at gennemgå dit projekt og rapportere. Den må ikke bruges 1 til 1: Ret de tekster, der står i kantede parenteser, så de passer til dit projekt, og slet de punkter, der ikke gælder. Jeg bruger selv en meget længere udgave til SPOR, og den kan ikke bruges på andre systemer.
Skabelon: sikkerhedstjek af dit eget projekt (tilpas til jer)
Rolle. Du er en forsigtig sikkerhedsrådgiver. Du skal gennemgå mit projekt [navn], som jeg selv ejer, og rapportere. Du må ikke ændre noget uden at spørge mig først.
Om projektet. Det er [kort beskrivelse, fx en webapp til rapporter]. Koden ligger på [GitHub], den kører på [Vercel/anden hosting], og data ligger i [database og region]. Det bruger [AI-tjeneste] til [formål]. Brugerne er [intern/kunder].
Regler.
- Arbejd kun i en kopi eller på testdata. Brug aldrig rigtige kundedata, og lav ikke angreb mod det, der kører live.
- Vis aldrig en nøgle, et kodeord eller en forbindelsesstreng. Skriv i stedet fx "nøgle til [tjeneste], fundet i [filnavn], linje [nummer]".
- Skriv "ikke undersøgt", hvis du ikke kan se det. Påstå ikke, at noget er sikkert.
Undersøg disse ting, og forklar hver på almindeligt dansk.
- Hemmeligheder: Ligger der nøgler, kodeord eller tokens i koden, i konfigurationsfiler, i historikken eller i filer, som browseren henter? Skeln mellem hemmelige nøgler og offentlige ID'er.
- Adgang: Hvilke sider og funktioner kan nås uden login? Kan en bruger se eller ændre en andens data ved at ændre et ID? Findes der adgangsregler i databasen, og virker de?
- Login: Er der to-faktor? Hvordan gemmes kodeord? Hvad sker der ved glemt kodeord og ved nedlukning af en konto?
- Indtastning: Bliver alt, brugeren skriver eller uploader, kontrolleret på serveren? Kan en fremmed få siden til at køre sin egen kode (XSS)? Kan en fil være farlig?
- Data og AI: Hvilke data sendes til AI-tjenesten og andre tjenester? Hvor behandles de? Kan et dokument eller en webtekst få AI'en til at gøre noget, den ikke skal, eller sende noget ud?
- Forbrug: Kan en bot eller en fejl give en stor regning? Findes der et loft pr. bruger og pr. måned?
- Kode og afhængigheder: Er der kendte fejl i de pakker, projektet bruger? Hvem kan sende ny kode i produktion?
- Logning: Bliver kodeord, nøgler eller dokumentindhold skrevet i en log?
Svar i dette format. En liste sorteret efter alvor (høj, middel, lav). For hvert fund: hvad er galt, hvor (filnavn og linje), hvad kan der ske, hvordan retter jeg det, og hvordan kan jeg teste, at det er rettet. Slut med en liste over det, du ikke kunne undersøge, og hvad jeg selv skal tjekke i mine konti (GitHub, hosting, database).
Kør prompten igen, når du har rettet. Og husk, at en gennemgang fra AI-værktøjet ikke er det samme som en uafhængig sikkerhedstest. Den finder meget, men ikke alt. Har projektet rigtige kunder eller følsomme data, så få en fagperson til at se på det. Vil du læse standarden bag: OWASP ASVS 5.0.
Hvad sker der, hvis I ikke tjekker?
Fejlene bliver dyre, når de først er opdaget af andre. En lækket nøgle giver misbrug og en regning. Kommer persondata ud, skal en virksomhed som udgangspunkt anmelde bruddet til Datatilsynet uden unødig forsinkelse og om muligt inden 72 timer (GDPR artikel 33). Det koster tid, tillid og ofte kunder. Se også hvad der skal leve videre efter go-live.
Hvordan kan jeg hjælpe?
Jeg gennemgår AI-byggede projekter mod tjeklisten og siger, hvad der skal rettes først. Jeg arbejder i denne rækkefølge: forstå processen → udvikle løsningen → integrere den → hjælpe med drift og videreudvikling. Se mine systemer og løsninger. Jeg giver ikke juridisk rådgivning, jeg er ikke revisor, og jeg garanterer ikke, at noget er sikkert eller overholder reglerne.
Hvad kan I gøre nu?
Gør dette i dag:
- Slå to-faktor til på GitHub, hosting, database, mail og domæne.
- Søg efter nøgler i koden og i historikken. Skift dem, der har ligget åbent.
- Test, om en bruger kan se en andens data.
- Sæt et forbrugsloft og en alarm.
- Kør prompten ovenfor på en kopi af projektet, og ret det vigtigste først.
Kort sagt: Det tager en eftermiddag at tjekke det grundlæggende, og meget længere at rydde op efter et brud.
Ofte stillede spørgsmål
Er AI-genereret kode sikker?
Ikke automatisk. Veracodes test af over 100 sprogmodeller i 2026 viste, at kode fra AI klarede sikkerhedstesten i 56 % af opgaverne, og at resultatet næsten ikke var blevet bedre på et år. Det er en test af isolerede opgaver og ikke en dom over et bestemt projekt, men det er en god grund til selv at tjekke.
Hvad gør jeg, hvis jeg har lagt en API-nøgle på GitHub?
Skift nøglen hos udbyderen med det samme, og slet den gamle. Det er ikke nok at fjerne den fra koden, fordi den stadig ligger i historikken. Tjek derefter udbyderens forbrug for aktivitet, du ikke kender.
Er to-faktor nok til at beskytte min software?
Nej, men det er et af de vigtigste lag. To-faktor beskytter mod et stjålet kodeord. Det beskytter ikke mod en fejl i koden, der lader en bruger se andres data, og heller ikke mod en nøgle, der ligger åbent. Derfor skal alle lagene være på plads.
Skal min software leve op til AI-forordningen?
Det afhænger af, hvad den bruges til, og af jeres rolle. Mange små interne værktøjer er ikke højrisiko, men der kan gælde krav om information til brugeren og om AI-forståelse hos medarbejderne. Læs oversigten i artiklerne om AI-forordningen, og spørg en jurist, hvis I er i tvivl.
Artiklen er generel vejledning og ikke juridisk rådgivning eller en sikkerhedsgaranti. Udgivet .