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-- 注入(inject)“name”参数会改变实体管理器创建的查询吗?
最佳答案
Doctrine 和使用 DBAL 的最大好处之一是注入(inject)保护。它将使用准备好的语句来不允许注入(inject)。尝试将该字符串添加到参数中不会导致查询发生更改。
我的 friend 想让我纠正自己,Doctrine 的最大好处不是它是 DBAL,而是它是 ORM。这是事实。
关于mysql - 原则 2 DQL 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11971477/