Разрешение запросов SQL, которые просматривают данные, не изменяет их - PullRequest
0 голосов
/ 04 ноября 2010

Я работаю над приложением, которое позволит пользователям самостоятельно создавать запросы для просмотра данных в своей базе данных.Однако условие заключается в том, что приложение должно предотвращать любые изменения таблиц и данных, хранящихся в базе данных.Приложение будет написано на C #.Любые хорошие предложения о том, как это можно сделать?Возможная идея, о которой я подумал:

  • Синтаксический анализ SQL для фильтрации любых резервных слов, которые могут изменить данные (т. Е. Вставка, изменение, т.д.)модификация из этого соединения приложения.

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

Ответы [ 5 ]

10 голосов
/ 04 ноября 2010

Вы должны запускать свои запросы как пользователь, у которого нет разрешения на запись.

4 голосов
/ 04 ноября 2010

Любая приличная СУБД должна иметь эти встроенные средства защиты (на уровне пользователя).Вы просто убедитесь, что у них есть только доступ только для чтения.

Тогда вам не нужно беспокоиться о чем-либо , что они делают.Пусть они попытаются вставить, обновить и удалить все, что хотят.

Это базовый принцип баз данных, которые они несут ответственность за свою собственную безопасность и целостность.Вы никогда не оставляете это на усмотрение внешнего приложения, поскольку любая обезьяна может написать приложение для подключения к базе данных, которое не следует правилам.

2 голосов
/ 04 ноября 2010

Обычно это делается путем предоставления пользователям доступа к (не обновляемым) представлениям, но не к таблицам.

2 голосов
/ 04 ноября 2010

Это должно быть обработано на уровне пользователя, а не на уровне запроса.При настройке приложения необходимо убедиться, что учетная запись, используемая для выполнения запросов, не имеет разрешений dbwriter.

1 голос
/ 04 ноября 2010

ИМХО, лучший способ - создать пользователя, который может делать выбор только в указанных таблицах.А затем использовать этого пользователя для подключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...