eEcho blog

is een halte van de gedachte

Php Sql Injection

Probleem:
Toepassing beveiligen tegen sql injection. Sql injection is een manier om in get of post argumenten sql doorgeven. Zoals bijvoorbeeld:

$wachtwoord = $_POST[’wachtwoord’];
// maak verbinding met DB
$result = query(”SELECT geheimeinfo FROM tabel WHERE
wachtwoord=’$wachtwoord’”);

Dan als we nu doorgeven in plaats van wachtwoord ‘a’ OR ‘1′ dan zal altijd True gekeerd worden.


Oplossing:

1. 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=’ . addslashes($wachtwoord) . ‘”);

2. gebruik prepared statements met de mysqli of de PDO Mysql extensies. Dat is zoals in C en python:

$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();

Comments are closed.

Home | info@eecho.info | Voorwaarden | Blog