Command Palette

Search for a command to run...

Woordenlijst SQL Injection (SQLi)

Wat is SQL-injectie (SQLi)?

SQL-injectie (SQLi) is een type aanval waarbij aanvallers kwaadaardige SQL-instructies invoeren in een invoerveld om de database te manipuleren.

Deze aanval richt zich op applicaties die er niet in slagen om validatie en gebruikersinvoer correct af te handelen, waardoor ongeautoriseerde toegang tot gevoelige gegevens zoals wachtwoorden of creditcardgegevens mogelijk wordt.

Hoe SQL-injectie werkt

Wanneer een applicatie gebruikersinvoer direct opneemt in een databasequery zonder juiste validatie, kunnen aanvallers het gedrag van de query wijzigen om een kwaadaardige SQL-instructie in te voeren.

Bijvoorbeeld:

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

Een aanvaller zou kunnen invoeren:

' OR '1'='1

Resulterend in:

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

Dit levert altijd waar op, waardoor ongeautoriseerde toegang wordt verleend.

Waarom SQL-injectie belangrijk is in cybersecurity

SQL-injectie is de gevaarlijkste en oudste techniek in cybersecurity. Dit type aanval staat consequent vermeld in de OWASP Top 10.

Zelfs kleine kwetsbaarheden stellen een aanvaller in staat om:

  • Toegang tot, wijzigen of verwijderen van gegevens
  • Authenticatie omzeilen
  • Administratieve bewerkingen op de database uitvoeren.
  • Het gehele systeem compromitteren.

Veelvoorkomende Soorten SQL-injectie

  • Klassieke SQLi : Directe injectie via webformulieren of URL-parameters.
  • Blinde SQLi : Aanvallers leiden database-informatie indirect af (bijv. via foutmeldingen of responstijd).
  • Union-gebaseerde SQLi : Gebruikt de UNION-operator om resultaten van meerdere queries te combineren.
  • Fout-gebaseerde SQLi : Vertrouwt op databasefoutmeldingen om informatie te extraheren.
  • Tijd-gebaseerde Blinde SQLi : Benut serverresponstijdvertragingen om queryresultaten te raden.

Hoe SQL-injectie te Voorkomen

1. Gebruik Geparameteriseerde Queries (Voorbereide Statements)

Zorg ervoor dat SQL-commando’s gebruikersinvoer als data behandelen, niet als uitvoerbare code.

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

2. Invoer Validatie en Sanitisatie

Valideer alle invoer van gebruikers, alleen verwachte tekens toestaan.

3. Gebruik ORM-frameworks

Frameworks zoals Prisma, Hibernate, etc., verminderen directe SQL-afhandeling.

4. Principe van Minimaal Recht

Beperk gebruikersrechten, geef alleen de rechten die nodig zijn.

5. Regelmatige Beveiligingstests

Gebruik applicatiebeveiligingstesttools zoals SAST, DAST of IAST om injectiefouten vroegtijdig op te sporen.

Voorbeeld in de echte wereld

Een website van een online winkel leed onder een inbreuk waarbij aanvallers een SQL-injectie in een inlogformulier gebruikten om creditcardgegevens uit de database te halen.

Gerelateerde termen

Volgende Stappen

Klaar om uw applicaties te beveiligen? Kies uw pad vooruit.

Sluit u aan bij 500+ bedrijven die hun applicaties al beveiligen met Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready