2012-08-15 103 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。這是真的。