We proberen de kwaliteit van onze kennisbank voortdurend te verbeteren.
Geef de informatie op deze pagina een waardering met de slider hierboven.
PHP SQL Injection
Een belangrijke categorie van beveiligingslekken in webapplicaties, is die van SQL injectie. Deze lekken ontstaan doordat gebruikersinput niet wordt gecontroleerd op ongewenste code (zgn "input validation"). Een malafide gebruiker kan zo bijvoorbeeld SQL queries aanpassen die door de applicatie worden uitgevoerd.
Een voorbeeld is de volgende PHP code :
$wachtwoord = $_POST[['wachtwoord']]; // maak verbinding met DB $result = query("SELECT geheimeinfo FROM tabel WHERE : wachtwoord='$wachtwoord'");
Iemand kan nu een formulier invullen, waardoor de inhoud van de $wachtwoord variable bijvoorbeeld is:
a' OR '1
Nu zal de SQL query altijd informatie teruggeven, wat het wachtwoord ook was. Andere mogelijkheid: toevoegen van extra queries (bijvoorbeeld "; DROP TABLE tabel").
Twee manieren om dit tegen te gaan zijn:
- escape de '$wachtwoord' variabele met 'addslashes' of 'mysql_real_escape_string'. Bijvoorbeeld:
$wachtwoord = $_POST[['wachtwoord']]; // maak verbinding met DB $result = query("SELECT geheimeinfo FROM tabel WHERE : wachtwoord='" . mysql_real_escape_string($wachtwoord) . "'");
$wachtwoord = $_POST[['wachtwoord']]; // maak verbinding met DB $stmt = $DB->prepare("SELECT geheimeinfo FROM tabel WHERE wachtwoord = ?"); $stmt->bind_param("s", $wachtwoord); $stmt->bind_result($geheimeinfo); if ($stmt->execute && $stmt->fetch()) { : // OK } else { : // niet OK } $stmt->close();
Zie ook Php Veiligheid
De huidige waardering is: 56/100 (10 stemmen)- Deze pagina is het laatst bewerkt op 9 feb 2012 om 16:45.
- Deze pagina is 2.218 keer bekeken.