2010-08-31 70 views
1

是否使用Zend_Db的或學說準備語句保護我免受SQL注入?Zend_DB/Doctrine保護我免受SQL注入嗎?

例如:

$stmt = $db->prepare('SELECT * FROM users WHERE name = ? AND password = ?'); 
$rs = $stmt->execute('peter', 'secret'); 

還是我必須要檢查的字符串和類型類型自己?

另一個匆匆:哪兩個是最好的?我只需要數據庫抽象(包括語句,過程和事務)。

回答

1

是。

準備好的語句,無論是用Zend_Db,Doctrine還是普通的舊mysqli完成,都可以通過從數據中分離查詢結構來防止注入。這意味着如果您準備一份基於名稱和密碼選擇用戶的聲明,那麼黑客就不會提供將該聲明轉換爲另一種聲明的數據。

只要確保查詢本身就是一個字符串常量。

關於你的第二個問題,理論和Zend_Db的具有不同的場合和不同的審美偏好不同的方法。這裏已經有幾個關於這個話題的問題。

+0

謝謝!這就是我想聽到的:) – Joernsn 2010-08-31 12:40:54