PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como posso evitar injeção de SQL com string de consulta JSONB arbitrária fornecida por um cliente externo?


Você pode permitir que os usuários especifiquem um caminho no documento JSON e, em seguida, parametrizem esse caminho em uma chamada para uma função como json_extract_path_text . Ou seja, a cláusula WHERE ficaria assim:
WHERE json_extract_path_text(data, $1) = $2

O argumento path é apenas uma string, facilmente parametrizável, que descreve as chaves para percorrer até o valor fornecido, por exemplo 'foo.bars[0].name' . O lado direito da cláusula seria parametrizado de acordo com as mesmas regras que você está usando para filtragem de coluna fixa.