【问题标题】:Zend secure sql queries?Zend 安全 sql 查询?
【发布时间】:2011-02-08 17:28:46
【问题描述】:

我想知道这样的东西在 Zend 中是否安全:

$db = Zend_Registry::get('db');
$query = "SELECT * FROM tags t JOIN posts_tags pt ON pt.tag_id = t.tag_id where pt.post_id = " . $postid;
$select = $db->query();

我不检查$postid的内容在这里。

当您进行这样的查询时,Zend 会自动执行此操作:

$db = Zend_Registry::get('db');
$select = $db->select();
$select->from(array('p' => 'posts'))
    ->join(array('u' => 'users'), 'u.user_id = p.post_userid')
    ->where('p.post_id = ?', $postid);

但我不喜欢这种工作方式,只是编写查询对我来说要快得多。那么我应该手动转义还是为我完成?最简单的方法是什么?

【问题讨论】:

    标签: php sql zend-framework escaping


    【解决方案1】:

    如果您不想使用 Zend_Db_Select,您可以这样做:

    $select = $db->query("SELECT * FROM tags t JOIN posts_tags pt ON pt.tag_id = t.tag_id where pt.post_id = ?", array($postid));
    

    其中第二个参数是要放入占位符的值数组。见:http://framework.zend.com/manual/en/zend.db.statement.html

    【讨论】:

      【解决方案2】:

      Zend 不能转义你的变量,因为它永远不会看到它。您的变量被附加到一个字符串中,并且 $db->query 方法可以看到整个字符串。

      我认为 query() 方法无论如何都不会进行任何清理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-31
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 2016-09-07
        相关资源
        最近更新 更多