Hvorfor AI-kod kræver menneskelig gennemgang (og det er helt fint)
Hvorfor AI-genereret kode kræver menneskelig gennemgang (og det er helt fint)
Vi er midt i en revolution inden for softwareudvikling. Værktøjer som Claude og ChatGPT gør det muligt at gå fra idé til kørende kode på dage i stedet for uger. Du beskriver en funktion, godkender ændringerne, finpudser og deployer. Det booster hastigheden markant.
Men der er en hage.
Jeg brugte nylig en eftermiddag på at gennemgå kode bygget præcis sådan – en simpel intern værktøj, ikke livsvigtigt, men typisk for, hvordan vi arbejder i 2024. Det var ikke AI, der løb amok. Problemet var hverdagsagtigt: 28 fejl, mest sikkerhedsrelaterede, og de fleste fra OWASP Top 10-lister, der har eksisteret i årtier.
Det handler ikke om farlig AI. Det handler om, hvordan lynhurtig udvikling kan efterlade dig med skjulte risici.
Problemet er ikke AI'en – det er dine ubesvarede spørgsmål
Koden var faktisk solid. Arkitekturen holdt stik. Komponenterne var velstruktureret. Bibliotekerne passede til opgaven. Hadde jeg selv kodet det i weekenden, ville det se ens ud ved første øjekast.
Forskellen sidder i det overordnede lag. Det, der sker før du skriver den første linje.
AI er mester i at levere, hvad du beder om. "Lav et brugeradministrationssystem," og du får et. Men det spørger ikke: Hvem må tilgå det? Hvilke data er følsomme? Hvor håndteres login? Hvad sker, hvis nogen smutter forbi frontenden?
AI bygger funktioner. Den designer ikke den sikkerhed, der lader dig sove godt om natten.
Eksempel: Admin-funktionen uden beskyttelse
Forestil dig en serverless-funktion til adminopgaver – opret brugere, nulstil adgangskoder, slet konti. Hold credentials server-side, ikke i browseren. Smart valg.
Men funktionen havde nul autentifikation.
Ikke svag. Ikke forkert. Simpelthen ingen. Åbn DevTools, find endpointen og send en POST – så kunne hvem som helst lave admin-konti eller ryge databasen.
Frontenden skjulte admin-knappen for almindelige brugere. Det så sikkert ud. Men UI-sikkerhed er en illusion.
Klassisk authorization bypass fra 2003. AI'en flaggede det ikke, fordi prompten var: "Byg en funktion, admins kan oprette brugere med." Den gør præcis det – uden at nævne ikke-admins.
AI gætter ikke på, hvad du glemte.
Databasen, der var sikker på papiret
En anden klassiker: Din database har row-level security (RLS) til at begrænse adgang baseret på brugeridentitet. Perfekt til API-nøgler i JavaScript.
En udvikler bad AI om multi-bruger-støtte. Den lavede migrationer med RLS på nye tabeller. Fejl fri.
Men de fem eksisterende tabeller med ægte data? Uændret. RLS måske aktiveret, måske ej. Migrationen tjekkede ikke.
Kør npm run db:push på ny infra, og nye tabeller er låst, mens gamle er åbne for alle med endpoint-adgang.
AI løste det specifikke problem. Den antog ikke, du ville sikre alt.
Sådan tilpasser du din udviklingsproces
AI-assisteret kodning er fantastisk. Hastighed er guld værd. Men det kræver erfarne øjne på arkitekturen, ikke kun syntax.
Her er, hvad der virker:
Lav en sikkerhedscheckliste først. Spørgsmål som: Hvem må kalde denne endpoint? Hvad sker uden tilladelse? Er dataet offentligt? Skal alle tabeller have RLS? Skriv det ned som forudsætninger.
Lad seniorer lave threat modeling. De 28 fejl var ikke stavefejl. De var designmangler. AI genererer kode. Mennesker tænker sikkerhed.
Gør auth eksplicit i prompts. Ikke "lav brugerendpoint". Prøv: "Lav brugerendpoint kun til logget-in admin, og dokumentér auth-antagelserne." Det får AI til at vise sit resonnement.
Test adgangsnekter separat. Sørg for, at ikke-autoriserede ikke kan gøre noget – udover at autoriserede kan.
Det væsentlige mønster
AI laver ikke usikker kode. Den laver præcis, hvad du beder om, og ignorerer det, du glemmer.
Det er en styrke – værktøjer skal følge prompts, ikke finde på krav. Men ansvaret flytter til dig. AI eksekverer dit design, tænker ikke sikkerhed for dig.
Koden jeg gennemgik fik brug for et menneske til at sige: "Denne endpoint skal have auth." Så tog rettelsen minutter. Gamle svagheder møder ny workflow – og vinder, hvis erfarne holder øje.
Fremtiden? AI til hastighed, mennesker til arkitektur. Begge er uundværlige.
Vil du undgå disse faldgruber i din kode? Hos NameOcean har vi hjulpet mange startups med teknisk gæld fra hurtig udvikling. Vores cloud hosting platform har indbygget sikkerhed som rate limiting, API-nøglehåndtering og audit logs – altid på, uanset om du husker at bede om det. Mindre at bekymre sig om, når teamet shipper i høj fart.