Command Palette

Search for a command to run...

Ordlista SQL Injection (SQLi)

Vad är SQL-injektion (SQLi)?

SQL-injektion (SQLi) är en typ av attack där angripare matar in skadlig SQL-sats i ett inmatningsfält för att manipulera databasen.

Denna attack riktar sig mot applikationer som misslyckas med att korrekt hantera validering och användarinmatning, vilket möjliggör obehörig åtkomst till känslig data såsom lösenord eller kreditkortsuppgifter, etc.

Hur SQL-injektion fungerar

När en applikation direkt inkluderar användarinmatning i en databasfråga utan korrekt validering, kan angripare ändra frågans beteende för att mata in en skadlig SQL-sats.

Till exempel:

SELECT * FROM users WHERE username = 'admin' AND password = '12345';

En angripare skulle kunna mata in:

' OR '1'='1

Vilket resulterar i:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

Detta returnerar alltid sant, vilket ger obehörig åtkomst.

Varför SQL-injektion är viktigt inom cybersäkerhet

SQL-injektion är den farligaste och äldsta tekniken inom cybersäkerhet. Denna typ av attack listas konsekvent i OWASP Top 10.

Även små sårbarheter tillåter en angripare att:

  • Åtkomst, ändring eller radering av data
  • Förbigå autentisering
  • Utföra administrativa operationer på databasen.
  • Kompromettera hela systemet.

Vanliga typer av SQL-injektion

  • Klassisk SQLi : Direkt injektion via webbformulär eller URL-parametrar.
  • Blind SQLi : Angripare drar slutsatser om databasinformation indirekt (t.ex. via felmeddelanden eller svarstid).
  • Union-baserad SQLi : Använder UNION-operatören för att kombinera resultat från flera frågor.
  • Felbaserad SQLi : Förlitar sig på databasens felmeddelanden för att extrahera information.
  • Tidsbaserad blind SQLi : Utnyttjar serverns svarsfördröjningar för att gissa frågeresultat.

Hur man förhindrar SQL-injektion

1. Använd parameteriserade frågor (förberedda uttalanden)

Säkerställ att SQL-kommandon behandlar användarinmatning som data, inte körbar kod.

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

2. Inmatningsvalidering och sanering

Validera all inmatning från användare, tillåt endast förväntade tecken.

3. Använd ORM-ramverk

Ramverk som Prisma, Hibernate, etc, minskar direkt hantering av SQL.

4. Principen om minsta privilegium

Begränsa användarbehörigheter, ge endast de behörigheter som behövs.

5. Regelbunden säkerhetstestning

Använd verktyg för applikationssäkerhetstestning som SAST, DAST eller IAST för att upptäcka injektionsbrister tidigt.

Exempel i den verkliga världen

En webbplats för en nätbutik drabbades av ett intrång där angripare använde en SQL-injektion i ett inloggningsformulär för att extrahera kreditkortsuppgifter från dess databas.

Relaterade termer

Nästa steg

Redo att säkra dina applikationer? Välj din väg framåt.

Gå med i 500+ företag som redan säkrar sina applikationer med Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready