0

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' 参数会改变实体管理器创建的查询吗?

4

1 回答 1

1

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

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

于 2012-08-15T14:47:46.920 回答