Vibe-programmering · Lektion

Grundlæggende sikkerhed for AI-kode

Undgå de risici, AI ofte overser.

Lektion 2 af 413 trin

Grundlæggende sikkerhed for AI-kode er en gratis Vibe-programmering-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Vibe-programmering, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Vibe-programmering-kurset indeholder 4 lektioner i alt.

AI skriver hurtigt — men nogle gange usikkert

AI er fantastisk til hurtigt at få noget til at fungere. Men "fungerende" og "sikkert" er ikke det samme. AI efterlader ofte rigtige apps åbne for angreb, fordi den optimerer til den forventede brug og ikke til fjendtlige brugere.

Den gode nyhed er, at en håndfuld vaner fanger de fleste problemer, og du kan bede AI om at anvende dem. Denne lektion gennemgår de sikkerhedsrisici, som du oftest møder ved vibe-kodning.

Læg aldrig hemmeligheder i koden

Den mest almindelige fejl: at indsætte en API-nøgle eller adgangskode direkte i koden. Hvis koden kommer på GitHub, er nøglen offentligt tilgængelig for altid — bots scanner efter lækkede nøgler inden for få minutter.

Hemmeligheder hører hjemme i miljøvariabler, aldrig i kildekoden. Se forskellen nedenfor.

// DANGER: key is hardcoded and will leak
const apiKey = 'sk-live-abc123realkey';

// SAFE: key comes from the environment, not the code
const apiKey = process.env.API_KEY;

if (!apiKey) {
  throw new Error('API_KEY is missing — set it in your .env file');
}

Hold hemmeligheder ude af Git

Gem hemmeligheder i en .env-fil, og sørg for, at Git ignorerer filen, så den aldrig bliver commit'et. Én linje i .gitignore er nok.

Bed dit AI-værktøj om at sætte det korrekt op fra starten.

Set up environment variables for this project:
- create a .env file with API_KEY=
- add .env to .gitignore so it's never committed
- create a .env.example with empty placeholders to commit instead
- show me where the code reads process.env.API_KEY

Stol aldrig på brugerinput

Den gyldne sikkerhedsregel: Alt, hvad en bruger kan skrive, kan brugeren lyve om. Angribere sender med vilje ugyldigt, overdimensioneret eller ondsindet input. Din kode skal validere det.

Her er en enkel kontrol, der tjekker input, før det bruges.

function createUser(input) {
  if (typeof input.email !== 'string' || !input.email.includes('@')) {
    return { error: 'Invalid email' };
  }
  if (input.age < 0 || input.age > 150) {
    return { error: 'Invalid age' };
  }
  return { ok: true };
}

console.log(createUser({ email: 'bad', age: 30 }));
console.log(createUser({ email: 'a@b.com', age: 30 }));

SQL-injektion: En klassisk AI-fejl

Hvis AI opbygger din databaseforespørgsel ved at sætte brugerinput ind i en streng, kan en angriber indsætte sine egne kommandoer og stjæle eller slette data. Det kaldes SQL-injektion.

Løsningen er parameteriserede forespørgsler — databasen behandler input som data, aldrig som kommandoer. Bed altid AI om at bruge dem.

// DANGER: user input glued straight into the query
db.query("SELECT * FROM users WHERE email = '" + email + "'");

// SAFE: parameterized — the ? is filled in safely
db.query('SELECT * FROM users WHERE email = ?', [email]);

Bed AI om at gennemgå sikkerheden

Du kan gøre AI til sikkerhedsgennemgår. Indsæt din kode, og bed den specifikt om at lede efter sårbarheder — den er meget bedre til at finde dem, når du spørger direkte.

Review this code for security problems. Specifically check for:
- hardcoded secrets or API keys
- unvalidated user input
- SQL injection
- missing authentication checks
List each issue, why it's risky, and the fix. Here is the code: <paste>

Beskyt det, der skal være privat

AI opbygger ofte et endepunkt, der returnerer data uden at kontrollere hvem der spørger. Det betyder, at alle kan læse en anden brugers data ved blot at ændre et ID i URL'en.

Alle følsomme handlinger kræver et autorisationstjek: Har denne bruger lov til at gøre dette?

// DANGER: anyone can read any order by guessing the id
app.get('/orders/:id', (req, res) => {
  res.json(getOrder(req.params.id));
});

// SAFE: only the owner can see their order
app.get('/orders/:id', (req, res) => {
  const order = getOrder(req.params.id);
  if (order.userId !== req.user.id) return res.status(403).end();
  res.json(order);
});

Hold afhængigheder opdaterede

Din app bruger mange pakker, som andre har skrevet. Nogle af dem har kendte sikkerhedshuller. Forældede afhængigheder er en af de mest almindelige måder, apps bliver hacket på.

En hurtig kommando tjekker for kendte sårbarheder, og AI kan hjælpe dig med at forstå resultaterne.

# Check installed packages for known vulnerabilities
npm audit

# Then ask AI:
# "npm audit reports 3 high-severity issues in <package>.
#  Explain the risk in plain English and tell me the safest way to fix it."

Læk ikke fejl til brugerne

Når noget går i stykker, viser AI-genereret kode nogle gange den rå fejl — herunder filstier, databasedetaljer eller stakspor. Det er en gave til angribere.

Log detaljer privat på serveren, men vis brugerne en generisk og venlig meddelelse.

try {
  doRiskyThing();
} catch (err) {
  console.error('Internal error:', err); // private log
  res.status(500).json({ error: 'Something went wrong. Please try again.' });
  // never send err.stack or err.message to the user
}

En sikkerhedstjekliste, du kan genbruge

Gennemgå dette, før du udgiver noget. Indsæt det i din AI, og bed den kontrollere hvert punkt i forhold til din kode.

  • Ingen hemmeligheder i koden eller Git-historikken.
  • Alt brugerinput er valideret.
  • Databaseforespørgsler er parameteriserede.
  • Følsomme ruter tjekker, hvem der er logget ind, og hvad de har lov til at gøre.
  • Afhængigheder er kontrolleret og opdaterede.
  • Fejl logges privat, og brugerne får generiske meddelelser.

Sikkerhed er en samtale, ikke et enkelt trin

Du opdager ikke alt, og det er helt i orden. Den tankegang, der beskytter dig, er: antag, at AI-kode er usikker, indtil den er gennemgået; stil sikkerhedsspørgsmål hver gang du tilføjer en funktion; og kør din tjekliste igen før hver udrulning.

Se AI som en omhyggelig samarbejdspartner, som du aktivt udspørger — ikke som et orakel, du stoler blindt på.

Hurtigt tjek

Din AI-assistent genererer en loginfunktion og indlejrer databaseadgangskoden direkte i kildefilen. Hvad bør du gøre?

Opsummering: Sikker som vane

AI leverer hurtigt, men springer sikkerheden over, så det er dig, der sørger for sikkerheden. Du har lært at holde hemmeligheder ude af koden, validere alt input, bruge parameteriserede forespørgsler, tilføje autorisationstjek, kontrollere afhængigheder og skjule rå fejl.

Bedst af alt kan du bede AI om at gennemgå netop disse problemer og køre en tjekliste før hver udrulning. Næste emne er at holde din kode ren og vedligeholdelsesvenlig.

Gratis at komme i gang

Lær JavaScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
25
Lektioner
100

Ofte stillede spørgsmål

Er lektionen “Grundlæggende sikkerhed for AI-kode” gratis?

Ja — alle 3 lektioner i læringssporet Vibe-programmering, inklusive “Grundlæggende sikkerhed for AI-kode”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Vibe-programmering-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Grundlæggende sikkerhed for AI-kode”?

Undgå de risici, AI ofte overser. Du øver dig i Vibe-programmering med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Vibe-programmering?

Der kræves ingen tidligere erfaring. Vibe-programmering på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Grundlæggende sikkerhed for AI-kode”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Vibe-programmering-lektion?

Ja. Alle Vibe-programmering-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Tilføj tests med AI
  2. Grundlæggende sikkerhed for AI-kode
  3. Hold koden vedligeholdelsesvenlig
  4. Ydeevne og omkostninger
← Tilbage til Vibe-programmering