All terms
Glossary

SQL Injection

En websårbarhed, hvor utroværdigt input sammensættes i SQL-forespørgsler, så en angriber kan køre vilkårlige databasekommandoer.

Sitecheck Team

SQL injection (SQLi) er en angrebsklasse, hvor utroværdigt input — et formularfelt, en URL-parameter eller en HTTP-header — sammensættes i en SQL-sætning, så angriberen kan ændre forespørgslens struktur. Vellykket udnyttelse kan læse vilkårlige tabeller, modificere eller slette data, eskalere rettigheder eller i visse konfigurationer eksekvere operativsystemkommandoer. Det har figureret i OWASP Top Ten i over to årtier.

Hvorfor det er vigtigt

En enkelt SQLi-fejl kan lække en hel brugerdatabase, inklusive hashede adgangskoder, session tokens og persondata underlagt GDPR. Oprydningsomkostninger omfatter tvungne password-resets, breach-meddelelser, bøder fra tilsynsmyndigheder og varig skade på tilliden. I modsætning til mange sårbarheder kan SQLi forebygges fuldstændigt med disciplinerede kodepraksisser — forholdet mellem konsekvens og indsats for at fikse det er enormt.

Sådan fikser du det

  • Brug parameterised queries eller prepared statements i hvert eneste databasekald; byg aldrig SQL via string-sammensætning.
  • Foretræk en gennemprøvet ORM eller query builder, så applikationskode aldrig ser rå SQL-fragmenter blandet med brugerinput.
  • Anvend least privilege: applikationens databasebruger bør ikke kunne droppe tabeller eller læse urelaterede skemaer.
  • Validér og normalisér input ved grænsen, men betragt validering som defence in depth, ikke den primære kontrol.
  • Lag bredere webforsvar — streng CSP, anti-CSRF-tokens og HSTS — så en enkelt inputfejl ikke kaskaderer.
  • Kør automatiserede SAST- og DAST-scanninger i CI, og gennemgå query-logs for usædvanlige mønstre.

Se også