Защита от SQL-инъекций в динамических запросах Postgres

Есть огромная view, которая через UNION ALL объединяет с добрую сотню подзапросов, которые тянут данные, нарушающие правила качества данных. Есть желание вместо этого забить подзапросы в таблицу в виде текста и прогонять их в пакете как динамические. Плюсы подхода довольно очевидны (проще деплоить, работать параллельно, отслеживать версии и т.д.), но и минусы есть. И больше всего в рамках вопроса беспокоят SQL-инъекции.

Ситуация:

  • Злоумышленник нашел способ вставить свой SQL-код в таблицу с подзапросами для правил
  • Пакет выполняется под могущественным пользователем, а другого создать не дадут (но можно создать роль).

Как ограничить функционально пакета так чтобы он мог лишь селектить? Очевидно, можно регулярными выражениями проверить подзапрос на ключевые слова, но хочется чего-то более надежного.


Ответы (0 шт):