Longhorn PHP 2026 - Call For Papers

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.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top