SQL Injection: wat het betekent en hoe je het inzet
Heldere keuze voor groei: SQL injection misbruikt onbeveiligde database-queries om ongeautoriseerd data te lezen of wijzigen. Voorkom het met…
SQL injection is een cyberaanvaltechniek waarbij een aanvaller kwaadaardige SQL-code invoegt in invoervelden van een applicatie om ongeautoriseerde toegang te krijgen tot de onderliggende database. Het is een van de oudste en nog steeds meest voorkomende webkwetsbaarheden, gerangschikt door OWASP als een van de grootste risico's voor webapplicaties. Bij een succesvolle aanval kan de aanvaller data lezen, wijzigen of verwijderen, en in sommige gevallen volledige controle over de server krijgen.

Wat is SQL Injection: wat het betekent en hoe je het inzet?
SQL injection is een cyberaanvaltechniek waarbij een aanvaller kwaadaardige SQL-code invoegt in invoervelden van een applicatie om ongeautoriseerde toegang te krijgen tot de onderliggende database. Het is een van de oudste en nog steeds meest voorkomende webkwetsbaarheden, gerangschikt door OWASP als een van de grootste risico's voor webapplicaties. Bij een succesvolle aanval kan de aanvaller data lezen, wijzigen of verwijderen, en in sommige gevallen volledige controle over de server krijgen.
Hoe werkt SQL Injection: wat het betekent en hoe je het inzet technisch?
SQL injection ontstaat wanneer gebruikersinvoer ongevalideerd wordt opgenomen in SQL-queries via stringconcatenatie. Bij een klassieke (in-band) SQL injection manipuleert een aanvaller een WHERE-clausule door invoer als \' OR 1=1 -- in te voeren, waardoor de query alle records retourneert in plaats van alleen het verwachte resultaat. Union-based injection gebruikt UNION SELECT om data uit andere tabellen op te halen via dezelfde query. Blind SQL injection exfiltreert data wanneer directe output niet zichtbaar is: boolean-based blind injection stelt ja/nee-vragen aan de database (bijv. of het eerste karakter van een wachtwoord een "a" is), terwijl time-based blind injection vertragingen via SLEEP() of WAITFOR DELAY gebruikt als signaal. Second-order SQL injection slaat kwaadaardige invoer eerst op in de database en voert deze later uit wanneer een ander deel van de applicatie die data in een query gebruikt. Out-of-band injection triggert de database om data naar een extern systeem te sturen via DNS-lookups of HTTP-verzoeken. De primaire verdediging is het gebruik van parameterized queries (prepared statements) die invoer strikt scheiden van SQL-code op database-niveau. ORM-frameworks zoals Prisma, Drizzle, SQLAlchemy en Entity Framework bieden ingebouwde bescherming door standaard parameterized queries te genereren. Input validation (allowlist-filtering op verwachte patronen), output encoding en het principe van least privilege voor databaseaccounts vormen aanvullende verdedigingslagen. Web Application Firewalls (WAF) detecteren en blokkeren verdachte SQL-patronen in HTTP-verzoeken als defense-in-depth maatregel. SAST-tools (Semgrep, SonarQube, CodeQL) en DAST-tools (sqlmap, Burp Suite) identificeren potentiële injection-kwetsbaarheden in respectievelijk de broncode en de draaiende applicatie. Stored procedures bieden een extra abstractielaag die de SQL-logica op de databaseserver houdt, maar zijn alleen veilig als ze intern ook parameterized queries gebruiken. NoSQL-databases als MongoDB zijn niet immuun: NoSQL injection manipuleert query-objecten via JSON-invoer op vergelijkbare wijze. GraphQL-endpoints vereisen specifieke aandacht omdat complexe nested queries onverwacht veel data kunnen extraheren als er geen depth limiting en query cost analysis is geïmplementeerd. De combinatie van allowlist-gebaseerde input validation, parameterized queries, ORM-gebruik en defense-in-depth met WAF biedt de sterkste bescherming tegen alle varianten van injection-aanvallen.
Hoe past MG Software SQL Injection: wat het betekent en hoe je het inzet toe in de praktijk?
Bij MG Software gebruiken we uitsluitend parameterized queries en ORM-frameworks die SQL injection by design voorkomen. We werken met Prisma en Drizzle ORM voor typeveilige database-interactie, waarbij elke query automatisch wordt geparametriseerd. Onze CI/CD-pipeline bevat geautomatiseerde SAST-scans met Semgrep die potentiële injection-kwetsbaarheden detecteren voordat code wordt gemerged. We passen strikte input validation toe op alle externe invoer, volgen het least-privilege principe voor databasetoegang via Supabase Row Level Security, en voeren periodieke code reviews uit met specifieke checkpoints voor injection-preventie. Bij het aannemen van een nieuw project voeren we een injection-audit uit als onderdeel van onze security baseline. We documenteren alle database-interactiepunten in een applicatiebrede threat map en configureren WAF-regels die verdachte SQL-patronen detecteren als extra verdedigingslaag. Bij legacy-projecten begeleiden we de gefaseerde migratie van raw SQL naar parameterized queries met geautomatiseerde regressietests voor elke batch geconverteerde queries.
Waarom is SQL Injection: wat het betekent en hoe je het inzet belangrijk?
SQL injection kan in één klap gevoelige tabellen leegtrekken, wijzigen of verwijderen en is nog steeds een van de meest voorkomende oorzaken van grote datalekken wereldwijd. De impact reikt verder dan dataverlies: meldplicht onder de AVG, reputatieschade, juridische aansprakelijkheid en verlies van klantvertrouwen. Voorkomen kost relatief weinig als parameterized queries, ORM-gebruik en code reviews standaard onderdeel zijn van het ontwikkelproces, terwijl het herstel na een succesvolle injectie vaak maanden doorwerkt in incident response, forensisch onderzoek en klantcommunicatie. Veel datalekken die de pers halen beginnen met een simpele SQL injection die met basismaatregelen te voorkomen was geweest. De kosten van preventie, parameterized queries en code reviews, zijn verwaarloosbaar vergeleken met de kosten van een succesvol datalek. Organisaties die SQL injection structureel voorkomen beschermen niet alleen hun eigen data, maar ook het vertrouwen van klanten en partners die hen hun gegevens toevertrouwen.
Veelgemaakte fouten met SQL Injection: wat het betekent en hoe je het inzet
Dynamische SQL met stringconcatenatie bouwen "omdat het sneller is" of "het maar een interne tool is." Blind vertrouwen op een ORM terwijl er raw queries zonder parameters in de codebase blijven bestaan voor complexe joins of rapportages. Zoekfilters, sorteerparameters en paginatie-offsets vergeten te parametriseren terwijl deze net zo kwetsbaar zijn. Databaseaccounts met DBA-rechten gebruiken voor applicatietoegang, waardoor een injectie niet alleen lezen maar ook DDL-operaties mogelijk maakt. Geen SAST-tooling in de CI/CD-pipeline opnemen, waardoor kwetsbaarheden pas bij een pentest of in productie worden ontdekt. Vertrouwen op client-side validatie als enige bescherming, terwijl aanvallers dit eenvoudig omzeilen door direct HTTP-verzoeken te sturen naar de API.
Welke voorbeelden zijn er van SQL Injection: wat het betekent en hoe je het inzet?
- Een webshop waarbij een aanvaller via het zoekveld een union-based SQL injection uitvoert en daarmee de volledige klantendatabase met e-mailadressen, gehashte wachtwoorden en ordergeschiedenis downloadt, wat leidt tot een meldplicht onder de AVG.
- Een beveiligingsonderzoeker die tijdens een pentest een time-based blind SQL injection ontdekt in een loginformulier, waarmee karakter voor karakter de admin-wachtwoordhash wordt geëxtraheerd door response-tijdverschillen te meten.
- Een ontwikkelteam dat na een SAST-scan alle ruwe SQL-queries in hun codebase vervangt door parameterized queries via hun ORM, waarmee 47 potentiële injection-punten worden geëlimineerd en de scan groen wordt.
- Een SaaS-platform dat een WAF-rule configureert die verdachte SQL-patronen in zoek- en filterparameters detecteert en blokkeert, als aanvulling op de parameterized queries in de applicatielaag voor defense-in-depth.
- Een legacy-applicatie die wordt gemigreerd van handgeschreven SQL met stringconcatenatie naar een moderne ORM, waarbij het team een inventarisatie maakt van alle 200+ query-locaties en deze systematisch vervangt met geautomatiseerde regressietests per batch.
Gerelateerde begrippen
Veelgestelde vragen
Wij bouwen hier dagelijks mee
Dezelfde expertise waar u over leest, zetten wij in voor opdrachtgevers in Nederland en daarbuiten.
Ontdek wat wij doenGerelateerde artikelen
Kennisbank: Penetration Testing van definitie tot implementatie
In 2026 onmisbaar: Penetration testing simuleert echte cyberaanvallen om kwetsbaarheden in uw systemen te vinden voordat kwaadwillenden dat doen:…
De sterkste web applicatie firewall tools op een rij
Regels die kwaadaars weren zonder echte gebruikers te blokkeren: zes WAF oplossingen op ruis en vertraging.
Security Audit template die je uren bespaart
Identificeer kwetsbaarheden voordat aanvallers dat doen. Security audit template met OWASP Top 10 checklist, penetratietest scope en remediatieplanning.
Wat is een API? Betekenis, werking en toepassing in moderne software
Een API (Application Programming Interface) koppelt softwaresystemen via gestandaardiseerde protocollen: van betaalintegraties en CRM-koppelingen tot real-time data-uitwisseling tussen apps, microservices en externe platformen.
