Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Consultas NoSQL construidas con objetos del usuario

5 tareas · 40 min · Principiante

En una base de documentos la consulta no es una cadena: es una estructura. Por eso la defensa de siempre —la consulta preparada— no se traduce sola, y aparece un error propio: dejar que el cliente decida la forma del filtro y no solo sus valores. El servicio de cuentas de Tinajal Servicios entrega su ruta de ingreso, su buscador de pedidos, sus utilidades de validación y un registro que anota el tipo de cada valor recibido.

0 de 5 · 0%

Objetivo de la sala

En una base de documentos la consulta no es una cadena: es una estructura. Por eso la defensa de siempre —la consulta preparada— no se traduce sola, y aparece un error propio: dejar que el cliente decida la forma del filtro y no solo sus valores. El servicio de cuentas de Tinajal Servicios entrega su ruta de ingreso, su buscador de pedidos, sus utilidades de validación y un registro que anota el tipo de cada valor recibido.

En las bases de documentos el filtro de una consulta se escribe como un objeto: claves que son campos y valores que son lo que se busca. Esa forma evita de entrada el problema clásico de pegar texto en una cadena de consulta, y por eso se repite la idea de que «aquí no hay inyección». La idea es falsa a medias: lo que se mezcla ya no es texto con texto, sino estructura con estructura.

El motor acepta que el valor de un campo sea un dato simple o un objeto con operadores de comparación —mayor que, distinto de, existe, coincide con una expresión—. Si el valor del filtro llega tal cual desde el cuerpo de la petición, quien manda la petición decide cuál de los dos envía, y con ello cambia el significado de la consulta sin tocar una sola letra del código. MITRE lo agrupa en CWE-943, de nivel clase, sobre los elementos especiales en la lógica de una consulta de datos; el catálogo nombra expresamente las consultas de documentos.

Hay una segunda variante, más silenciosa: copiar la consulta entera recibida dentro del filtro del servidor. Ahí no se discute el tipo de un valor, se discute quién escribe el filtro.

Responde para continuar

¿Por qué el filtro de una base de documentos puede cambiar de significado sin que cambie el código?

Ver pista de ayuda

Mira qué puede ser el valor de un campo dentro del filtro.

Abre el laboratorio y lee la carpeta tinajal-nosql. El proyecto ya tiene escrita la defensa: un archivo de utilidades con una función que devuelve el valor solo si de verdad es una cadena de texto. Una de las rutas de pedidos la usa. La ruta de ingreso, no.

Responde para continuar

¿Qué función del propio proyecto comprueba que un valor sea texto antes de entrar en un filtro, y la ruta de ingreso no llama? Escribe su nombre tal como aparece en el código.

Ver pista de ayuda

Está exportada junto a otra utilidad para listas cerradas.

El registro de ingresos no guarda valores: guarda el tipo de lo que llegó en cada campo, que es lo que la política de la empresa permite anotar. Eso basta para separar el ruido de lo que importa. Busca la línea donde el resultado es correcto y el tipo de lo recibido no es el que una pantalla de ingreso puede producir.

Responde para continuar

¿Qué cuenta terminó con un ingreso correcto en una petición cuyos valores no eran texto? Escríbela tal como aparece en el registro.

Ver pista de ayuda

Hay varias peticiones con valores no textuales; solo una terminó en «correcto».

Para el informe hace falta una cifra, no una impresión. Cuenta las peticiones de ingreso del registro en las que al menos uno de los dos campos llegó con un valor que no era texto, sin importar cómo terminaron.

Responde para continuar

¿Cuántas peticiones de ingreso del registro llegaron con al menos un valor que no era texto? Escribe solo el número.

Ver pista de ayuda

Revisa las dos columnas de tipo, no solo la del usuario.

La ruta de ingreso y el buscador de pedidos fallan por motivos distintos y se corrigen distinto. En el ingreso, el filtro lo arma el servidor y de fuera solo entra un valor con su tipo comprobado. En el buscador, el problema es que el filtro del servidor se completa con lo que mande el cliente: la corrección es leer campo por campo los filtros permitidos y construir el objeto con ellos, con el inquilino puesto por el servidor y sin posibilidad de que nadie lo reemplace.

Responde para continuar

En el buscador de pedidos, ¿qué consecuencia tiene copiar la consulta recibida dentro del filtro del servidor?

Ver pista de ayuda

Fíjate en el orden en que se arman las claves del objeto.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad