2009-12-09 6 views
8

Ich habe den folgenden Code:Zend Db vermeiden SQL-Injections

public function checkLoginDetails($email, $password) { 
    $select = $this->select(); 
    $select->where ("password=?", md5($password)); 
    $select->where ("email=?", $email); 
    return $this->fetchRow($select); 

} 

E-Mail und Passwort kommen direkt vom Benutzer. Muss ich E-Mails beispielsweise mit mysql_real_escape_string filtern oder macht Zend DB das für mich?

Vielen Dank!

Antwort

15

Ich war der Hauptentwickler auf Zend_Db, bis Zend Framework 1.0.

In dem Beispiel, das Sie anzeigen, werden die Werte in die Abfrage interpoliert, wobei entsprechende Anführungszeichen und Escapes angewendet werden. Du musst nichts mehr tun.

Intern verwendet es die Quoting-Funktion in der PHP-Erweiterung für die Zend_Db_Adapter, die Sie verwenden. Z.B. PDO::quote().

+1

Ich benutze mysqli Adapter anstelle von PDO. Macht es einen Unterschied? – iBiryukov

+1

In diesem Fall verwendet es mysqli :: real_escape_string() '. Gleicher Effekt. –