Wat is een SQL injectie?
Een SQL-injectie is een veelvoorkomende beveiligingskwetsbaarheid waarbij een aanvaller schadelijke SQL-code toevoegt aan een invoerveld in een webapplicatie. Deze aanval wordt meestal uitgevoerd door gegevens in te voeren in bijvoorbeeld zoekvelden, loginformulieren of URL’s die niet goed gecontroleerd worden.
Wanneer de applicatie de invoer van de gebruiker direct in een SQL-query gebruikt, kan de aanvaller deze query manipuleren. Dit kan leiden tot ongeautoriseerde toegang tot de database, het ophalen van gevoelige informatie (zoals gebruikersgegevens), het wijzigen of verwijderen van data, of zelfs het uitvoeren van systeemcommando’s op de server.
Hoe werkt het?
Een eenvoudig voorbeeld is wanneer een inlogformulier de gebruikersnaam en het wachtwoord verwerkt door ze direct in een SQL-query in te voeren, zoals:
SELECT * FROM users WHERE username = 'input' AND password = 'input';
Als een aanvaller de invoer ' OR 1=1 -- invoert in het veld voor de gebruikersnaam, kan de query er als volgt uitzien:
SELECT * FROM users WHERE username = '' OR 1=1 -- ' AND password = '';
Dit zou de query altijd als waar beschouwen (omdat 1=1 altijd waar is), waardoor de aanvaller toegang kan krijgen zonder het juiste wachtwoord te kennen.
Bescherming tegen SQL-injectie
Om SQL-injectie-aanvallen te voorkomen, moeten webapplicaties gebruikersinvoer altijd goed valideren en ontsnappen. Het gebruik van parameterized queries (ook wel prepared statements genoemd) is een van de meest effectieve manieren om deze kwetsbaarheid te vermijden. Hiermee worden gebruikersinvoeren gescheiden van de SQL-query, waardoor invoer niet als deel van de query wordt uitgevoerd.
Daarnaast kunnen webapplicaties profijt hebben van het toepassen van principes zoals het least privilege (minimale toegang tot de database), en het regelmatig uitvoeren van beveiligingsaudits om kwetsbaarheden te identificeren en te verhelpen.
Benieuwd wat cyberveiligheid jou oplevert?
Ontdek hoe een sterke cyberveiligheid jouw bedrijf beschermt, kosten bespaart en vertrouwen opbouwt.
