Terug naar begrippenlijst

SQL Injection (SQLi)

SQL Injection (vaak afgekort tot SQLi) is een manier om een database te manipuleren via invoervelden op een website of app. De term klinkt technisch, maar het principe is verrassend simpel: een aanvaller stopt kwaadaardige SQL-code in een veld waar je normaal iets onschuldigs typt zoals een naam of e-mailadres. Als de achterliggende code niet goed beveiligd is, voert de database die invoer blindelings uit. Met alle gevolgen van dien: toegang tot data, aanpassen van records of zelfs volledige overname van een systeem.

Geschreven door Remco Thijssen

Zwaaiende emoji

Remco Back-end developer

Meer over Remco

Inhoudsopgave

Wat begint met een naamveld, eindigt bij je database

Wat begint als een simpel tekstveld, kan veranderen in een achterdeur naar je volledige database. Aanvallers proberen via slimme trucjes de logica van je code te omzeilen. Ze stellen als het ware een vraag aan de database in een taal die hij niet zou mogen begrijpen, maar toch uitvoert.

In plaats van een specifieke gebruiker op te vragen, spuugt de database hierdoor alles uit wat hij heeft. Inclusief data waarvan je dacht dat die goed verstopt zat.

Slordige code, dure gevolgen

SQLi staat al jarenlang stevig in de OWASP Top 10: de lijst van meest kritieke beveiligingsfouten in webapplicaties. Dat komt doordat veel websites nog steeds gebruikmaken van dynamische queries zonder voldoende beveiliging.

Zeker bij oudere systemen of snel in elkaar gezette applicaties wordt validatie van gebruikersinvoer vaak vergeten of verkeerd uitgevoerd. En precies daar ligt de zwakke plek.

Hoe voorkom je SQLi?

Het goede nieuws is dat SQL Injection goed te voorkomen is. De sleutel zit in hoe je omgaat met invoer van gebruikers. Door gebruik te maken van veilige methoden (zoals parameterized queries of prepared statements) geef je de database geen kans om invoer als een opdracht te interpreteren.

Daarnaast is het belangrijk om invoer te valideren (klopt het type en het formaat van de invoer?) en geen aannames te doen over wat gebruikers invullen. Want hoe betrouwbaar een formulier er ook uitziet: de echte gevaren zitten onder de motorkap.

Veelgestelde vragen

Toegang krijgen tot vertrouwelijke data, gebruikersaccounts wijzigen, gegevens wissen of systemen overnemen.

Nee, zeker niet. Elke site of app met een invoerveld en een achterliggende database is een mogelijk doelwit.

Valideren is belangrijk, maar niet voldoende. De beste bescherming is het gebruik van veilige database-aanroepen.

Dat kun je testen met speciale tools of laten controleren in een code-audit. Maar een goede codebasis is altijd de eerste stap.

Remco Thijssen Back-end developer

Meer over Remco

Ik heb de opleiding Applicatie en mediaontwikkelaar niveau 4 gevolgd bij Gildeopleidingen in Venray. Daarnaast ben ik momenteel aan het afstuderen aan de HAN voor de opleiding HBO-ICT in Arnhem. Dit is een deeltijdopleiding die ik volg naast mijn werk bij Wux. Ik werk sinds 2021 bij Wux als back-end developer. Hier ben ik als stagiaire begonnen. Ondertussen ben ik doorgegroeid en heb ik meerdere functies zoals back-end developer en projectmanager. Dit betekent dat ik alles wat ik tijdens mijn studie leer kan toepassen in mijn werk, maar ook veel praktijkervaring op doe naast de theorie. Ik pak complexe problemen aan en ben altijd op zoek naar de beste oplossing. Dit doe ik door mijn kennis die ik heb opgedaan toe te passen en up to date te blijven met de nieuwste technieken.

Twee mannen in overleg tijdens het werk achter hun computerschermen
Zwaaiende emoji

Thijn Back-end developer

Op zoek naar slimme software-oplossingen die jouw bedrijf efficiƫnter maken?

Het team van Wux ontwikkelt maatwerk software die aansluit bij jouw behoeften. Neem vandaag nog contact op en ontdek hoe we jouw bedrijf elke dag succesvoller kunnen maken.

Meer over software