$sql = "SELECT password FROM users WHERE username = '" . $_GET['username'] . "';"; $result = $db->query($sql); $value = $result->fetchColumn(); if ($value == sha1($_GET['password'])) { " echo 'your are logged in'; }
vrijdag 25 oktober 13
RISICO • $sql: SELECT password FROM users WHERE username = ” OR 1=1
• $result: • •
vrijdag 25 oktober 13
alle users en paswoorden 1ste rij: wellicht admin
altijd true!
PREPARED STATEMENTS • Placeholders in plaats van values • •
statement éénmaal parsen herhaaldelijk oproepen met andere parameterwaarde
• Voordelen:
• tijdswinst • overzichtelijke syntax • structuur query ligt vast, dus veilig
vrijdag 25 oktober 13
// query met een sql-parameter $sql = "SELECT password FROM users WHERE username = :user_name;"; // statement wordt op voorhand geparsed $stmt = $db->prepare($sql); // php variable linken aan sql-parameter // het moet een string zijn met maximum 15 karakters $stmt->bindParam(':user_name', $_GET['username'], PDO::PARAM_STR, 15); // statement uitvoeren $stmt->execute(); $value = $stmt->fetchColumn(); if ($value == sha1($_GET['password'])) { " echo 'your are logged in'; } vrijdag 25 oktober 13