Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

234
Vistas
¿Esta consulta parametrizada está abierta a la inyección de SQL?

Alguien que miró mi código dijo que la consulta SQL a continuación (SELECCIONAR * DESDE...) obviamente estaba abierta a ataques. Investigué esto y parece que lo estoy haciendo correctamente usando una consulta parametrizada, pero claramente me estoy perdiendo algo.

 app.get("/api/v1/:userId", async (req, res) => { try { const teammate = await db.query("SELECT * FROM teammates WHERE uid = $1", [ req.params.userId, ]);
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Esta consulta no está abierta a la inyección SQL, porque utiliza una consulta parametrizada. Los datos no se sustituyen por el parámetro ( $1 ), sino que se envían por separado en un mensaje de "enlace", por lo que no importa lo que contengan los datos, no se interpreta como parte de la instrucción SQL.

Además, parece que el argumento es un número entero, y la inyección SQL solo puede ocurrir con argumentos de cadena.

over 4 years ago · Santiago Trujillo Denunciar

0

Alguien en esa empresa puede haber asumido que el $1 se usaría para la interpolación de cadenas, en lugar de un parámetro de consulta SQL.

Es posible que no sepan que PostgreSQL usa el sigilo del signo de dólar para un marcador de posición de parámetro de consulta. ¿Otras bases de datos como el uso de MySQL ? para un marcador de posición, y Oracle usa un : sigilo delante de un parámetro con nombre.

Escribiste el código correctamente. Vea un ejemplo similar para node.js y PostgreSQL aquí: https://node-postgres.com/features/queries La sección sobre "Consulta parametrizada" muestra específicamente ese estilo de código como defensa contra la inyección de SQL.

En retrospectiva, es mejor que no consigas ese trabajo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda