Добавление второго соединения с запретом всей политики доступа с доступом только для чтения к определенной базе данных и выбором таблиц или представлений таблиц без конфиденциальных столбцов.Имена представлений могут совпадать с именами таблиц, если вы вводите отдельную схему.Конечно, ваша СУБД должна поддерживать все эти функции.Как только вы это сделаете, БД позаботится обо всей безопасности.
Безопасность по синтаксису очень трудно гарантировать - зависит от синтаксических особенностей SQL базы данных (и ошибок), поскольку базы данных имеют свои собственные приемы sqlinjection.Также трудно правильно определить, что не так, с помощью простого синтаксического анализатора, например: [УДАЛИТЬ ИЗ], но [ВЫБРАТЬ * ИЗ X, ГДЕ НАМ НРАВИТСЯ "% delete from our records%"] - наконец, было бы проще реализовать простой ala-SQL-DSL-анализатор и перевод AST в SQL с экранированием не маркерных элементов.Но все еще очень сложный и с риском.