0

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 に設定されているパラメーター化されたクエリです。私たちのプロジェクトのコード セキュリティを確認しようとしているので、doctrine コミュニティのメンバーに、createQuery が sql ステートメントを準備するかどうかを尋ねたかったのです。

たとえば、「OR 1=1--」を「name」パラメーターに挿入すると、entitymanager によって作成されるクエリが変更されますか?

4

1 に答える 1

1

Doctrine と DBAL を使用する最大の利点の 1 つは、インジェクション保護です。インジェクションを許可しないように、準備済みステートメントを使用します。その文字列をパラメーターに追加しようとしても、変更されたクエリにはなりません。

私の友人は、Doctrine の最大のメリットは DBAL ではなく、ORM であるということで、自分自身を訂正してほしいと言っています。これは本当です。

于 2012-08-15T14:47:46.920 に答える