【问题标题】:Zendframework - mysql injection how to protectZendframework——mysql注入如何保护
【发布时间】:2011-08-07 07:54:51
【问题描述】:

如果我使用方法,例如在 ZF 中插入、更新我会安全吗(mysql 注入)?

例如一部分代码:

            $data = array(
                'autor' => $autor,
                'title' => $title,
                'text' => $text,
                'date' => $date,
            );
            $news = new News();
            $news->insert($data); // safe?

【问题讨论】:

  • 可能是this 答案可以提供帮助。

标签: php mysql zend-framework frameworks code-injection


【解决方案1】:

这里有类似的问题:

How to prevent SQL Injection attack in applications programmed in Zend Framework?

始终确保使用 mysql_real_escape_string 清理用户输入值

【讨论】:

    【解决方案2】:

    我认为只要你拥有它就可以了。我的意思是使用 PDO ext 的优点之一是防止使用 PHP 而不是 MySQL 来查询数据库的 SQL 注入。 Here is more from devzone.zend.com

    【讨论】:

      【解决方案3】:

      你这样做的方式很好。但要小心 mysql 表达式。在那里你应该使用Zend_Db_Expr-Object:

      $data = array(
          'author' => 'John Doe',
          'title' => 'Headline goes here',
          'text' => 'The content...',
          'date' => new Zend_Db_Expr('NOW()') //  <--- use this for SQL-Expressions
      );
      $news = new News();
      $news->insert($data);
      

      【讨论】:

      • 实际上任何包含()的表达式都会被自动转换;)
      • framework.zend.com/manual/en/zend.db.table.html 查看示例 #13 和上面的文本:默认情况下,数据数组中的值使用参数作为文字值插入。如果您需要将它们视为 SQL 表达式,则必须确保它们与纯字符串不同。使用 Zend_Db_Expr 类型的对象来执行此操作。
      猜你喜欢
      • 2013-02-19
      • 2017-10-31
      • 2015-08-20
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多