sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo puedo evitar la inyección de SQL con una cadena de consulta JSONB arbitraria proporcionada por un cliente externo?

Podría permitir que los usuarios especifiquen una ruta dentro del documento JSON y luego parametrizar esa ruta dentro de una llamada a una función como json_extract_path_text . Es decir, la cláusula WHERE se vería así:

WHERE json_extract_path_text(data, $1) = $2

El argumento de la ruta es solo una cadena, fácilmente parametrizable, que describe las claves para recorrer hasta el valor dado, p. 'foo.bars[0].name' . El lado derecho de la cláusula se parametrizaría según las mismas reglas que usa para el filtrado de columnas fijas.