2013-07-26 2 views
0

Мы создаем структуру отчетов в нашем приложении, что требует использования построителя запросов. В конечном счете, мы хотим, чтобы опытные пользователи могли создавать SELECT-запросы, которые будут использоваться для заполнения набора данных отчета.Как предотвратить использование пользователями операторов UPDATE с помощью построителя запросов?

Наборы данных построены с использованием DataAdapter (либо MSSQL, либо SQLite). Существуют ли какие-либо инструменты, которые мы можем использовать, чтобы гарантировать, что запросы, созданные конечным пользователем, могут быть только операторами SELECT?

EDIT:

Как уже упоминалось выше, мы нацелены SQLite в качестве одного из поддерживаемых движков нет DB разрешений не могут быть установлены на этой платформе.

ответ

1

Если построитель запросов выполнен в доме, и если построитель запросов возвращает инструкцию SQL в строке, вы можете проанализировать его либо для поиска ключевых слов обновлений, либо с помощью Regex, если вы хотите избавить пользователей от проблем создания запроса на обновление, а затем осознание того, что они не могут его запустить, тогда вы должны постоянно выполнять эту проверку при создании запроса. Кроме того, вы можете использовать сторонний построитель запросов, например этот: http://www.activequerybuilder.com/, к сожалению, я верю, что он не поддерживает ничего, кроме операторов Select, но это может стоить того выстрела.

3

Установить права доступа к БД. Это лучшее решение.

EDIT:

Для SQLLite можно установить только для чтения разрешения для файла - в файловой системе.

2

Дайте пользователю выполнить SQL как только разрешение db_datareader, чтобы убедиться, что они ничего не могут сделать, кроме как прочитать данные.

Этот вопрос дает больше информации о том, как сделать это: How to give a user only select permission on a database

0

Я думаю, все, что вам нужно сделать, это обернуть QueryBuilder и выставить только разрешенную операцию. Мне нехорошо думать, наоборот, как позволить пользователю построить запрос, и в конце вы скажете ему, что это не допустимо.

Смежные вопросы