Zend - 插入/更新时我需要使用quote()吗?

Eri*_*rik 3 mysql security zend-framework sql-injection

我正在开发一个允许用户输入mySQL中的VARCHAR(255)字段的应用程序,因此安全性是一个主要问题.

我无法理解quote().如果我使用quote('test'),数据在SELECT上返回'\'test \'',这是不可取的.如何取消引用此数据?

如果我绕过quote(),我可以查看phpmyadmin并看到'test',所以Zend似乎并没有自动转发引号...

我的代码看起来像这样:

    public function getDbTable() {
        if (null === $this->_dbTable) {
           $this->setDbTable(new Zend_Db_Table($this->_tableName));
        }
        return $this->_dbTable;
    }

    private function insert($anObject) {
        $row['cell1'] = $anObject->getCell1();
        $row['cell2'] = $anObject->getCell2();

         $this->getDbTable()->insert($row);
    }

在插入和更新时,我应该在$ anObject-> getCell1()等周围使用quote()吗?

zer*_*kms 5

不,Zend为你做到了.

如果我绕过quote(),我可以查看phpmyadmin并看到'test',所以Zend似乎并没有自动引用我...

呵呵,如果你在PMA中看到'test'(带引号),那就意味着Zend成功引用了你的字符串.如果Zend没有引用()它 - 你会看到关于错误查询的例外.;-)