Zend db - 我什么时候应该引用以避免sql注入?

时间:2011-09-12 14:03:43

标签: php zend-framework

我很困惑框架何时自动引用以及何时不引用quote个变量。例如,据我所知,它没有引用where子句(除非你使用额外的参数?)。

是否有引导/备忘单引用我们必须在基本CRUD操作中手动quote

谢谢。

2 个答案:

答案 0 :(得分:4)

对我来说,基本的“经验法则”如下:

  • 如果您需要将值插入字符串,例如:"SELECT * from TABLE WHERE value=$value",您必须先引用它。
  • 如果您使用占位符,例如$select->where('value = ?', $value');array('value' => $value)之类的值数组,框架将为您引用值。

希望它有所帮助,

答案 1 :(得分:2)

永远不要自己构建查询字符串,始终让Zend_Db为您完成。即,不要通过自己构建字符串来指定where子句(等):

$where = 'id = ' . $_REQUEST['id'] . ' and thing = ' . $_REQUEST['thing'];
$select->where($where);

而是这样做:

$select
    ->where('id = ?', $_REQUEST['id'])
    ->where('thing = ?', $_REQUEST['thing']);