Zend_DB / Doctrine是否保护我免受SQL注入?

时间:2010-08-31 09:23:05

标签: php sql zend-framework doctrine sql-injection

在Zend_DB或Doctrine中使用预处理语句是否可以保护我免受sql注入?

示例:

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

或者我是否必须自己检查字符串和类型类型?

另一个快速:两者中哪一个最好?我只需要数据库抽象(带语句,过程和事务)。

1 个答案:

答案 0 :(得分:1)

准备语句,无论是使用Zend_Db,Doctrine还是普通的mysqli,都可以通过将查询结构与数据分开来保护您免受注入。这意味着如果您准备一个根据用户名和密码选择用户的语句,那么黑客就无法提供将该语句转换为另一个语句的数据。

只需确保查询本身是一个字符串常量。

至于你的第二个问题,Doctrine和Zend_Db有不同的方法,适合不同的情况和不同的审美偏好。这里有关于这个主题的几个问题。