Безопасный способ создания базы данных SQL на основе пользовательского ввода в приложении C # - PullRequest
0 голосов
/ 18 мая 2018

Я изо всех сил пытаюсь найти решение самостоятельно в Интернете.

Недавно я узнал, что @parameters нельзя использовать для представления имен баз данных.

В моем случае каждый пользователь должен зависеть от назначенной базы данных (по многим причинам).Я думал о создании базы данных с использованием sqlCommand, который динамически объединяет команды sql и входную строку, но мне сказали, что это глупая идея (я согласен).

Я слышал о SMO, хотя и не уверен, что это поставит меня в нужное место.

Может быть, есть способ генерировать случайное имя для базы данных по запросу пользователя, а затемсохранить это имя в таблице базы данных 'master' вместе с именем пользователя для целей идентификации?

Пока я не найду правильное решение, я в значительной степени приостановлю работу.

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

В отличие от других, кто прокомментировал, я вижу пример использования БД для каждого пользователя, особенно если каждый клиент (компания) является пользователем, и вы хотите разделить данные.

Идея, которая приходит мне в голову,Исходя из вашего комментария, что все базы данных имеют одинаковую архитектуру, стоит использовать модель базы данных.Структурируйте это так, как вы хотите.Тогда у вас может быть SP для создания базы данных с сгенерированным именем, может быть, именем пользователя или другим статическим свойством, чтобы как-то избежать использования прямого пользовательского ввода (инъекция ...)

0 голосов
/ 18 мая 2018

Я создал приложение, которое делало что-то похожее на это, и то, что я делал, оставляло пустую базу данных на SQL Server и создавало хранимую процедуру для его копирования (с другим именем, конечно).

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

0 голосов
/ 18 мая 2018

Ну, один из способов, который я могу придумать, - создать базу данных с хранимой процедурой.Вы можете передать пользовательский ввод в SPROC и проверить его там с помощью параметров в sp_executesql или с помощью QUOTENAME.

...