SQL injection voorkomen

Wat is SQL injection?

Met SQL injection proberen hackers toegang tot je website te krijgen om zo gegevens te stelen of gegevens te veranderen zodat de hackers hier voordeel van hebben. Hierdoor kan je hele database vernield worden. Het voorkomen van SQL injecties is belangrijk om de veiligheid en reputatie van je website te garanderen. Het is een van de meest voorkomende web hacking technieken.

Er zijn verschillende manieren om SQL injectie te voorkomen, afhankelijk van het type webapplicatie dat je hebt. Sommige algemene tips zijn:

  • Maak bij invoer van gebruikers gebruik van queries met parameters. Variabelen worden hierbij als parameter opgegeven bij de query. Voorbeeld: i.p.v. SELECT * FROM gebruikers WHERE gebruikersnaam = '$gebruikersnaam', gebruik SELECT * FROM gebruikers WHERE gebruikersnaam = ?.
  • Valideer en filter je gebruikersinvoer op ongewenste of bedreigende elementen. Dit kan betekenen dat je controleert of de gebruiker alleen geldige tekens, letters, cijfers en spaties gebruikt, en dat je ongewenste tekens verwijdert of vervangt door lege waarden.
  • Gebruik database-accounts met beperkte rechten en schakel ze uit als ze niet meer nodig zijn. Dit vermindert het risico dat hackers toegang krijgen tot gevoelige informatie of andere accounts kunnen manipuleren.
  • Encrypt je database. Versleutel gegevens die gevoelig zijn voordat je ze opslaat in de database, zo verberg je eventueel gevoelige gegevens voor hackers.

PHP voorbeeld:

$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($stmt, "s", $userName);
mysqli_stmt_bind_param($stmt, "s", $userPass);
mysqli_stmt_execute($stmt);
$row = mysqli_stmt_fetch($stmt);