Si vous passez des paramètres $_GET (ou $_POST)
   à vos requêtes, assurez-vous de les convertir en chaînes de caractères avant.
   Les utilisateurs peuvent insérer des tableaux associatifs dans les requêtes
   GET et POST, qui pourraient alors devenir des requêtes $ indésirables.
  
   Un exemple assez anodin : supposez que vous cherchez les informations d'un
   utilisateur avec la requête http://www.example.com?username=bob.
   Votre application crée la requête
   $q = new \MongoDB\Driver\Query( [ 'username' => $_GET['username'] ]).
  
   Cela fonctionne bien, mais quelqu'un pourrait subvertir cela en passant
   http://www.example.com?username[$ne]=foo, que PHP
   transformera magiquement en un tableau associatif, transformant votre requête en
   $q = new \MongoDB\Driver\Query( [ 'username' => [ '$ne' => 'foo' ] ] ),
   qui renverra tous les utilisateurs dont le nom n'est pas "foo" (tous vos utilisateurs, probablement).
  
   C'est une attaque assez facile à contrer : assurez-vous que les paramètres
   $_GET et $_POST sont du type attendu
   avant de les envoyer à la base de données. PHP dispose de la fonction
   filter_var() pour vous aider.
  
Notez que ce type d'attaque peut être utilisé avec n'importe quelle interaction avec la base de données qui localise un document, y compris les mises à jour, les upserts, les suppressions et les commandes findAndModify.
Voir » la documentation principale pour plus d'informations sur les problèmes de type injection SQL avec MongoDB.
