【问题标题】:Doctrine 2 DQL Security学说 2 DQL 安全性
【发布时间】:2012-08-15 14:44:23
【问题描述】:

一个 DQL 查询示例

<?php
$query = $em->createQuery('SELECT u FROM ForumUser u WHERE u.username = :name');
$query->setParameter('name', 'Bob');
$users = $query->getResult(); // array of ForumUser objects

上面的示例是一个参数化查询,其中 name 设置为 Bob。当我试图检查我们项目中的代码安全性时,我想询问学说社区的成员 createQuery 是否准备了 sql 语句。

例如,将 ' OR 1=1-- 注入 'name' 参数会改变实体管理器创建的查询吗?

【问题讨论】:

    标签: mysql sql security zend-framework doctrine-orm


    【解决方案1】:

    Doctrine 和使用 DBAL 的最大好处之一是注射保护。它将使用准备好的语句来不允许注入。尝试将该字符串添加到参数不会导致查询更改。

    我的朋友希望我纠正自己说 Doctrine 的最大好处不是它是一个 DBAL,而是一个 ORM。这是真的。

    【讨论】:

      猜你喜欢
      • 2012-03-11
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多