Direct naar de inhoud
xhosting

SQL injectie

2 min. lezen

Wat is SQL-injectie?

SQL injectie is een aanvalstechniek waarbij een hacker via een invoerveld of URL zelf databasecode meestuurt. Een website die die invoer niet goed controleert, voert die code uit alsof het onderdeel van het programma is. Zo kan een aanvaller gegevens lezen, wijzigen of verwijderen.

Het is een bekende aanval op webapplicaties en nog steeds relevant, vooral bij zelfgemaakte of verouderde software.

Hoe werkt het in de praktijk?

Stel dat een zoekveld de invoer rechtstreeks in een databasevraag plaatst. Een gewoon zoekwoord levert dan gewone resultaten op. Een aanvaller stuurt in plaats daarvan invoer die de vraag verandert, zodat die bijvoorbeeld gebruikersgegevens teruggeeft. Hetzelfde kan via een URL-parameter of een inlogformulier.

Wat een aanvaller ermee kan, hangt af van de rechten van de databasegebruiker. Dat maakt rechten belangrijk, ook als de code zelf nog niet is aangepast.

Hoe voorkom je SQL-injectie?

Het is goed te voorkomen. De belangrijkste maatregelen zijn:

  • Gebruik voorbereide queries (prepared statements) in plaats van invoer rechtstreeks in een SQL-opdracht te plakken.
  • Valideer en beperk invoer, bijvoorbeeld op type en lengte.
  • Geef databasegebruikers alleen de rechten die ze echt nodig hebben.
  • Houd software en plugins actueel, want veel SQL-injecties zitten in verouderde code.

Een web application firewall kan extra aanvallen tegenhouden, maar vervangt geen veilige programmering. Meer over die laag lees je in het artikel over de web application firewall.

Waarom is dit vooral een probleem bij maatwerk en oude software?

Grote, veelgebruikte software wordt vaak snel gecontroleerd en bijgewerkt. Maatwerk en oude plugins worden minder vaak getest en soms lang niet aangepast. Daardoor kan een lek langer blijven bestaan.

Gebruik je maatwerkcode of een plugin die al lang niet meer is bijgewerkt? Laat die dan nakijken of vervangen. Zie ook waarom updates en patches belangrijk zijn.

Veelgestelde vragen

Wat is het verschil tussen SQL-injectie en XSS?

Bij SQL-injectie richt de aanval zich op de database, bij XSS op de browser van bezoekers. Beide ontstaan doordat invoer niet goed wordt verwerkt, maar het effect en de verdediging verschillen. Lees het artikel over cross-site scripting voor de details.

Kan mijn hoster SQL-injectie voor mij voorkomen?

Een hoster beveiligt de server en het netwerk, maar de software op je site is meestal jouw verantwoordelijkheid. Een firewall van je hoster kan sommige aanvallen tegenhouden. Vraag wat er standaard wordt gedaan en houd je CMS, plugins en code zelf actueel.

Hoe weet ik of mijn site kwetsbaar is voor SQL-injectie?

Een zekere manier is een professionele controle van de code of een beveiligingsscan. Let zelf op foutmeldingen die databasedetails tonen, en op software die niet meer wordt bijgewerkt. Een foutmelding met databasedetails is al een reden om de code te laten nakijken.

AVG

De AVG is de Europese verordening voor persoonsgegevens. Lees welke beveiligingsmaatregelen ze van je website vraagt en wat dat voor je organisatie be...

Firewall bij webhosting

Een firewall filtert verkeer naar je server op poorten en IP-adressen. Lees wat een firewall bij webhosting doet, wat hij niet kan en wie hem regelt.

Pentest of kwetsbaarheidsscan

Een kwetsbaarheidsscan is geautomatiseerd, een pentest is handmatig en dieper. Lees wat ze opleveren en voor welke websites een van beide zinvol is.