SQL-injectie is een veelvoorkomende beveiligingskwetsbaarheid waarbij een aanvaller kwaadaardige SQL-code injecteert in een query die naar de database wordt gestuurd. Hierdoor kan de aanvaller:
- Gevoelige gegevens bekijken: Zoals gebruikersnamen, wachtwoorden, e-mailadressen of creditcardgegevens.
- Gegevens manipuleren: Informatie wijzigen, verwijderen of nieuwe gegevens toevoegen.
- Beheerderstoegang verkrijgen: Door in te loggen zonder geldig wachtwoord.
- Uitvoeren van beheerfuncties: Zoals het stoppen van de database of het uitlezen van configuratiebestanden.
Het is een van de oudste en nog steeds meest voorkomende vormen van aanvallen op webapplicaties vanwege de eenvoud en de impact die het kan hebben.
Hoe werkt SQL-injectie?
SQL-injectie werkt door gebruikersinvoer direct in een SQL-query op te nemen zonder voldoende validatie of ontsmetting. Hierdoor kan een aanvaller de structuur van de query manipuleren.
Voorbeeld van een kwetsbare query:
<?php
$gebruikersnaam = $_GET['gebruikersnaam'];
$query = "SELECT * FROM gebruikers WHERE gebruikersnaam = '$gebruikersnaam'";
$resultaat = mysqli_query($connectie, $query);
?>
https://voorbeeld.nl/?gebruikersnaam=' OR '1'='1
SELECT * FROM gebruikers WHERE gebruikersnaam = '' OR '1'='1';
' UNION SELECT gebruikersnaam, wachtwoord FROM admin --