PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment puis-je empêcher l'injection SQL avec une chaîne de requête JSONB arbitraire fournie par un client externe ?

Vous pouvez autoriser les utilisateurs à spécifier un chemin dans le document JSON, puis paramétrer ce chemin dans un appel à une fonction telle que json_extract_path_text . Autrement dit, la clause WHERE ressemblerait à :

WHERE json_extract_path_text(data, $1) = $2

L'argument path est juste une chaîne, facilement paramétrable, qui décrit les clés à parcourir jusqu'à la valeur donnée, par ex. 'foo.bars[0].name' . Le côté droit de la clause serait paramétré selon les mêmes règles que celles que vous utilisez pour le filtrage de colonne fixe.