Ga naar de hoofdinhoud
Support
0
Contact opnemen
English
Deutsch
Español
Dedicated serversFlexible VPSCloud TechnologieColocatieUitdagingen in ITSectorenWerken bij
Cloud Compute

Met Cloud Compute heb je altijd en overal toegang tot een portal waarin je jouw volledige IT-omgeving kunt configureren – waar ter wereld je ook bent.

Cloud Storage

Altijd de zekerheid dat je bestanden, infrastructuur en applicaties beschikbaar zijn – zonder haperingen of vertraging. Bij Worldstream bieden we verschillende opslagoplossingen.

Flexible cloud icon
Flexible cloud
Private cloud icon
Private cloud
Bare metal icon
Bare Metal
Hollow cube icon
Object storage
Hollow cube icon
File storage
Block storage icon
Block storage
Backup storage icon
Back-up storage
Support nodig?

24/7/365 support met een gemiddelde reactietijd van 7 min. Dankzij onze eigen datacenters kunnen engineers direct naar je server voor snelle ondersteuning. Mail of bel ons meteen.

Alle Servers

Kies jouw Dedicated Server nu. Custom of Instant Delivery. Powerhouse Servers die bij jouw use case passen.

Use Cases

Welke Use Case ook bij jou past; wij helpen jou om de perfecte oplossing te vinden.

Deal servers icon
Deals
AMD servers icon
AMD Processors
AI servers icon
Intel Processors
Hollow cube icon
Virtualisatie, Containerisatie en Orkestratie
Hollow cube icon
Websites en Applicaties
Hollow cube icon
Gaming en Streaming Infrastructuur
Support nodig?

24/7/365 support met een gemiddelde reactietijd van 7 min. Dankzij onze eigen datacenters kunnen engineers direct naar je server voor snelle ondersteuning. Mail of bel ons meteen.

Animatie van twee pijlen in de vorm van een T-splitsing
Slim outsourcen

Bepaalde IT creëert meerwaarde, andere is ondersteunend. Neem dat als uitgangspunt bij outsourcing.

Animatie van twee pijlen die een cirkel vormen en elk een andere kant op wijzen
Kostenefficiëntie

Volledige IT-pakketten mogen een veilige keuze lijken, uit kostenoogpunt zijn andere keuzes logischer.

Animatie van vier aan elkaar verbonden pijlen die elk een andere kant op wijzen
IT-flexibiliteit & controle

Outsourcing betekent niet het verlies van controle, het biedt juist meer flexibiliteit en controle.

Animatie van een naar rechts wijzende pijl
Cloudrepatriëring

Cloud is geen eindstation: blijf evalueren en verander van omgeving als dat nodig is.

Financiële diensten
Logistiek & transport
Retail & e-commerce
Media & Entertainment
Tech & software-ontwikkeling
Security
Managed Service Providers
Support nodig?

24/7/365 support met een gemiddelde reactietijd van 7 min. Dankzij onze eigen datacenters kunnen engineers direct naar je server voor snelle ondersteuning. Mail of bel ons meteen.

Chat met onsNeem contact op
Over WorldstreamOver de techniekCasesKennisbank
Over onsOntmoet het teamWerken bij onsReseller wordenCertificeringenOnze datacentersOns netwerkDDoS-beschermingAMD EPYC serversTechnologie partnersBesturingssystemenAlle casesEasyTerraDutch Drone CompanyPerfGridFAQArtikelen (EN)Nieuws en blogsDownloadsProducten en diensten
Neem contact op

Bel +31 (0) 174 – 712 117

Industriestraat 53, Naaldwijk

English
Deutsch
Español
Logo van YoutubeLogo van InstagramLogo van FacebookLogo van LinkedInLogo van X
0
Dedicated serversFlexible VPSCloud TechnologieColocatieUitdagingen in ITSectorenWerken bijOver WorldstreamOver de techniekCasesKennisbankMy Worldstream
Contact
Support
EnglishDeutschEspañol
  1. HomeHome
  2. Kennisbank
  3. Beveiliging
  4. Wat is SQL injection, en hoe bescherm je je ertegen

Wat is SQL injection, en hoe bescherm je je ertegen

Van toepassing op Elke applicatie met een SQL-database als backendDoelgroep Ontwikkelaar, technische evaluatorLaatst beoordeeld september 2026

Kort antwoord

SQL injection ontstaat wanneer onvertrouwde invoer rechtstreeks als tekst in een databasequery terechtkomt, waardoor een aanvaller kan veranderen wat die query daadwerkelijk doet. De standaardoplossing is een parameterized query (ook wel prepared statement genoemd). Die houdt gebruikersinvoer altijd als data, en laat het nooit onderdeel worden van de structuur van de query. Vrijwel elke moderne databasebibliotheek ondersteunt dit. Het is de echte oplossing, niet zomaar één laag tussen meerdere.

Op deze pagina
  • Hoe SQL injection in de praktijk ontstaat
  • Een eenvoudig voorbeeld
  • De echte oplossing: parameterized queries
  • Extra lagen, geen vervanging

Hoe SQL injection in de praktijk ontstaat

Een SQL injection-kwetsbaarheid begint met onvertrouwde invoer, alles wat een gebruiker kan beïnvloeden zoals een formulierveld, een URL-parameter of een cookiewaarde, die rechtstreeks als platte tekst in een databasequery wordt geplakt. De applicatie bouwt de query door strings aan elkaar te plakken, stuurt het resultaat naar de database, en de database kan geen onderscheid maken tussen "de query die de ontwikkelaar bedoelde" en "de query zoals die er nu uitziet nadat de invoer is toegevoegd". Bevat die invoer zelf SQL-syntax, dan kan dat de betekenis van de query volledig veranderen. Een aanvaller die dit ontdekt, kan mogelijk data lezen die hij niet zou mogen zien, records aanpassen of ze verwijderen, allemaal via een veld dat alleen bedoeld was voor iets als een gebruikersnaam of een zoekterm.

Een eenvoudig voorbeeld

Stel je een inlogcontrole voor die zijn query in grote lijnen zo opbouwt: hij neemt de gebruikersnaam die in het formulier is getypt en plakt die rechtstreeks in een string die ongeveer zegt "zoek de gebruiker waarvan de gebruikersnaam gelijk is aan" wat er ook is ingetypt. Typt een legitieme gebruiker alice, dan vraagt de query om de gebruiker met de naam alice, precies zoals bedoeld. Maar omdat de gebruikersnaam als platte tekst is ingevoegd, kan een aanvaller iets typen dat helemaal geen gebruikersnaam is: een fragment SQL-syntax dat is ontworpen om de logica van de query te veranderen, bijvoorbeeld iets waardoor de "where"-voorwaarde altijd als waar wordt geëvalueerd, ongeacht welke gebruikersnaam werd verwacht. De database ziet geen "ongewone gebruikersnaam", maar een aangepaste query, en voert die uit zoals hij er staat.

Vergelijk dat nu met een inlogcontrole die in plaats daarvan een parameterized placeholder gebruikt voor de gebruikersnaam. De structuur van de query, "zoek de gebruiker waarvan de gebruikersnaam gelijk is aan een placeholder", staat vast en wordt eerst naar de database gestuurd. De getypte gebruikersnaam wordt daarna apart aangeleverd, als een waarde die in die placeholder wordt geplaatst, nooit als tekst die met de query zelf wordt samengevoegd. Wat de aanvaller ook typt, het wordt puur behandeld als de waarde waarnaar wordt gezocht, zelfs als het tekens bevat die in de samengevoegde versie gevaarlijk zouden zijn geweest. De logica van de query kan simpelweg niet worden veranderd door wat er in dat veld terechtkomt, omdat de database de structuur van de query en de data van de query vanaf het begin via twee gescheiden kanalen houdt.

De echte oplossing: parameterized queries

Parameterized queries, ook wel prepared statements genoemd, zijn de standaardoplossing, geen optionele extra. Ze werken door de structuur van de query los van de waarden die hem invullen naar de database te sturen, zodat gebruikersinvoer altijd als data wordt behandeld en nooit als onderdeel van de syntax van de query, ongeacht welke tekens erin zitten. Dit is geen nichefunctie: vrijwel elke moderne databasebibliotheek en ORM, in vrijwel elke programmeertaal, ondersteunt parameterized queries als een normale, voor de hand liggende manier om een query te schrijven. Bouwt een codebase ergens queries door strings met gebruikersinvoer aan elkaar te plakken, dan is dat precies het patroon dat het waard is om op te sporen en te vervangen.

Extra lagen, geen vervanging

Parameterized queries lossen het injectiemechanisme zelf op, maar twee andere praktijken zijn het waard om daarbovenop te leggen, als defence in depth in plaats van als alternatief:

  • Input-validatie. Controleren of invoer eruitziet zoals verwacht, een e-mailveld lijkt op een e-mailadres, een numerieke ID is ook echt numeriek, vangt misvormde invoer vroeg af. Het is een nuttige extra controle, maar geen vervanging voor parameterized queries, want validatielogica kan onvolledig zijn of omzeild worden op manieren waarop de eigen parameterafhandeling van een databasedriver dat niet is.
  • Databaseaccounts met minimale rechten. Het databaseaccount waarmee een applicatie verbinding maakt, zou alleen de rechten moeten hebben die die applicatie echt nodig heeft. Heeft een webapplicatie alleen ooit specifieke tabellen nodig om te lezen en te schrijven, dan zouden de bijbehorende databasegegevens ook geen rechten moeten hebben om tabellen te verwijderen of onverwante tabellen te lezen. Dit beperkt de schade als een injectiefout, of een andere inbreuk, toch gebeurt, zonder de fout zelf te voorkomen.

Beide zijn de moeite waard. Geen van beide vervangt het daadwerkelijk oplossen van het patroon in de querybouw dat injection om te beginnen mogelijk maakt.

Gerelateerde artikelen

  • Wat is een Web Application Firewall (WAF), en hoe verschilt die van een netwerkfirewall
  • Een verse VPS hardenen: SSH-sleutels, firewall en Fail2ban
Was dit artikel nuttig?

Solid IT. No Surprises

Sparringpartner voor IT-volwassenheid
Barrières wegnemen zodat jij vooruit kan
Voorspelbare en transparante kosten

Contact

  • Industriestraat 53, Naaldwijk
  • Betaalmethoden
  • Abuse
  • Developers Resources
  • Network Operations Center
  • Over ons
  • Ontmoet het team
  • Werken bij ons
  • Reseller worden
  • Certificeringen
  • Onze datacenters
  • Ons netwerk
  • DDoS-bescherming
  • AMD EPYC servers
  • Technologie partners
  • Besturingssystemen
  • Overzicht
  • FAQ
  • Cases
  • Nieuws & blogs
  • Use Cases
  • Downloads
English
Deutsch
Español
Logo van YoutubeLogo van InstagramLogo van FacebookLogo van LinkedInLogo van X
English
Deutsch
Español
Logo van YoutubeLogo van InstagramLogo van FacebookLogo van LinkedInLogo van X
  • Juridisch
  • Disclosure