## Ataques por inyección de peticiones

Si está pasando parámetros de `$_GET` (o `$_POST`) a sus consultas, asegúrese de que primero se conviertan a strings. Los usuarios pueden insertar arrays asociativos en peticiones GET y POST, lo que podría convertirse en consultas no deseadas con operadores $-.

Un ejemplo bastante inocuo: supongamos que está buscando la información de un usuario con la petición http://www.example.com?username=bob. Su aplicación crea la consulta `$q = new \MongoDB\Driver\Query( [ 'username' => $_GET['username'] ])`.

Alguien podría subvertir esto mediante http://www.example.com?username[$ne]=foo, que PHP convertirá mágicamente en un array asociativo, convirtiendo su consulta en `$q = new \MongoDB\Driver\Query( [ 'username' => [ '$ne' => 'foo' ] ] )`, lo que devolverá todos los usuarios que no se llamen "foo" (probablemente todos sus usuarios).

Este es un ataque bastante fácil de defender: asegúrese de que los parámetros de $_GET y $_POST sean del tipo que espera antes de enviarlos a la base de datos. PHP tiene la función filter_var() para ayudar con esto.

Tenga en cuenta que este tipo de ataque puede usarse con cualquier interacción con la base de datos que localice un documento, incluyendo actualizaciones, upserts, eliminaciones y comandos findAndModify.

Consulte » la documentación principal para obtener más información sobre problemas similares a la inyección SQL con MongoDB.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open