2012-08-15 102 views
0

甲DQL查询样品学说2 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 

上面的例子是,其中名称被设置给Bob一个parametized查询。当我试图在我们的项目中查看代码安全性时,我想问一下原则社区的成员createQuery是否准备好了sql语句。

例如,是否将'OR 1 = 1--注入到'name'参数中,改变由entitymanager创建的查询?

回答

1

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

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