Wat is een SQL-injectie?

  • Opslaan als PDF
  • Print
  • 5x Aanbevolen
Gepubliceerd:28-09-2011 om 08:35 Auteur:Kristian van Tuil

IT-begrippen kort en helder uitgelegd. Wat is een SQL-injectie?

sql, database, injection

Een SQL-injectie (of SQLi) is een methode om een op SQL-gebaseerde database via internet te kraken. De hacker test in zo'n geval vooraf of de database van de website vatbaar is voor een SQL-injectie door verschillende queries via zijn browser op de database los te laten. Als de hacker beet heeft (en de database dus kwetsbaar is), kan de hacker uiteindelijk de backend database in zijn geheel overnemen.

Volgens beveiliger Imperva zijn SQL-injecties inmiddels verantwoordelijk voor 83 procent van de succesvolle aanvallen waarbij hackers data van bedrijven weten te stelen. Dit jaar werden Sony, Nokia en ook de website van artieste Lady Gaga slachtoffer van SQL-injecties. Deze week werd zelfs SQL-leverancier MySQL slachtoffer van zo'n hack. De methode is eerder dit jaar vooral veel toegepast door de notoire hacktivisten van LulzSec, die SQLi's veelvuldig toepasten.

Hoe werkt zo'n hack?

Bij een SQL-injectie wordt een webapplicatie gekraakt om een achterliggende database bloot te leggen. Door bepaalde vragende queries toe te passen, kan een hacker ervoor zorgen dat een database onbedoeld gevoelige data begint op te hoesten. Die gevoeligheid ontstaat doordat de database ontworpen is om via een webapplicatie (legitieme) commando's te verwerken die (ontschuldige) gegevens toont.

Een SQL-injectie heeft tot gevolgen dat hackers bedrijfsdata kunnen ontvreemden zoals intellectueel eigendom of klantgegevens. Ook kan het wachtwoord van de beheerder achterhaald worden, waardoor de hacker de backend database in zijn geheel kan overnemen en er bijvoorbeeld een malware-applicatie in kan plaatsen. Tot slot is ook het platleggen of omvormen (defacing) van de website mogelijk.

Hoe vaak vindt zo'n aanval plaats?

Sinds eind 2010 heeft Imperva een dertigtal webapplicaties gemonitord om te zien hoe vaak deze aangevallen werden. Zoals je hieronder in de grafiek kunt zien, werden deze apps honderden tot duizenden malen per dag bestookt met frauduleuze SQL-queries, vooral uit de Verenigde Staten, maar ook vanuit landen als China, Vietnam, het Verenigd Koninkrijk en Zweden. Volgers de beveiliger maken hackers daarbij vooral gebruik van tools als Sqlmap en Havij die ook bij developers populair zijn als testsoftware.

Hoe beveilig je een SQL-database?

Allereerst kun je een SQL-injectie voorkomen door variabelen in de SQL-query niet te isoleren of te quoten. GET en POST variabelen (dynamisch SQL) dienen niet in queries voor te komen. Werk liever met reguliere expressies en kijk naar het gebruik van de Escape-string. Dat laatste kun je automatiseren door prepared statements te gebruiken. Kijk voor meer algemene informatie over het voorkomen van SQL-injecties hier, hier en hier. Wil je specifiekere informatie, ga dan zelf via een zoekmachine als Google op zoek. Er zijn namelijk talloze pagina's beschikbaar die ingaan op de beveiliging tegen SQL-injecties bij databases van specifieke SQL-leveranciers.

  • Opslaan als PDF
  • Print
  • 5x Aanbevolen
Relevante whitepaper: Uitdagingen van een Windows 7-migratie Download
blog comments powered by Disqus

Nieuwsbrief

Ontvang tweemaal per week een overzicht van de meest recente artikelen op Computerworld.nl in uw mailbox