mysql - 原则 2 DQL 安全

标签 mysql sql security zend-framework doctrine-orm

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/

相关文章:

sql - 优化 "not in"查询

sql - 如何在 MySQL 中搜索多个列?

sql - 在一台 SQL Server 上拥有 1000 个 SQL 用户/登录名是否需要考虑性能问题?

security - Azure Blob 存储在 Microsoft 中时是否已加密?

mysql - Solr 使用 group by 搜索和 having 子句进行报告

php - PHP 中的 System() 函数

mysql - mysql中如何计算权重

php - 如何估计网站上可能的最大用户数?

java - URL 证书问题

javascript - 防止以下系统中的手动 POST 请求