sql >> Databáze >  >> RDS >> PostgreSQL

Jak mohu zabránit vkládání SQL pomocí libovolného řetězce dotazu JSONB poskytnutého externím klientem?

Můžete uživatelům umožnit zadat cestu v dokumentu JSON a pak tuto cestu parametrizovat v rámci volání funkce jako json_extract_path_text . To znamená, že klauzule WHERE by vypadala takto:

WHERE json_extract_path_text(data, $1) = $2

Argument cesty je pouze řetězec, snadno parametrizovatelný, který popisuje klíče pro přechod dolů na danou hodnotu, např. 'foo.bars[0].name' . Pravá strana klauzule by byla parametrizována podle stejných pravidel, jaká používáte pro filtrování pevných sloupců.




  1. Omezte SQL součtem hodnot řádku

  2. Lze NLTK použít v uložené proceduře Postgres Python

  3. Dynamické SQL a Temp tabulky T-SQL

  4. JavaScript Před smazáním potvrďte pomocí PHP/MYSQL