提问人:Matthieu 提问时间:6/14/2023 更新时间:6/14/2023 访问量:97
Symfony SQL注入
Symfony SQL Injection
问:
大家好!
我目前正在修复应用程序中的一个错误,并且有一个我有疑问的代码。
$query = $this->em->createQuery(
"SELECT client FROM App\\Entity\\Gescom\\Client client WHERE client.name LIKE CONCAT('%', :query, '%')"
)
->setFirstResult(($request->get('page') - 1) * $request->get('page_limit'))
->setMaxResults($request->get('page_limit'));
$query->execute([
'query' => $request->get('q') . '%'
]);
关于这条线:
$query->execute([
'query' => $request->get('q') . '%'
]);
是否存在任何 SQL 注入问题或是否安全?
我在网上搜索过,但找不到问题的答案。即使我在其中连接了某些内容,也可以防止所有 SQL 注入吗?execute()
答:
2赞
ADyson
6/14/2023
#1
您传递的是参数名称及其值的列表,然后数据库引擎会将其安全地放入 SQL 语句中,以代替匹配的命名占位符(在 SQL 语句中标记)。execute()
:
因此,在本例中,您实际上并没有将任何内容连接到您的 SQL 中,而是正确地提供了单独的 SQL 语句和参数值列表。数据库引擎将确保参数化值永远不会被视为可执行 SQL 的代码段。
因此,是的,它应该是安全的,不会注入 SQL。
评论
. '%'
CONCAT('%', :query, '%')