Создать скрытую базу данных на SQL сервере - PullRequest
1 голос
/ 06 мая 2020

Я написал приложение Windows в C#, которое подключается к базе данных SQL Сервера. Я запускаю этот запрос изнутри приложения, чтобы создать SQL аутентификацию пользователя сервера, которая предположительно скрыта от P C user:

SET @LoginName = 'TestAdmin'
SET @Password = 'pass@word1'

-- Create user
SET @SQL = 'Create Login ' + @LoginName + ' with Password = ''' + @Password + ''''

EXEC sp_executesql @SQL

-- Adding user to sysadmin role
EXEC sp_addsrvrolemember @LoginName, 'sysadmin'

Я планирую загрузить файл .SQL для создания базы данных с таблицы и данные, все это можно делать программно из приложения. Я не хочу, чтобы пользователь приложения или владелец P C имел полный доступ к этой базе данных.

Проблема:

Когда я go на SQL Server Management Studio, как пользователь, я могу просто подключиться к базе данных, используя аутентификацию Windows, и получить полный доступ к таблицам и данным базы данных! Как я могу это предотвратить? Я хочу, чтобы только это приложение имело доступ к своей базе данных?

1 Ответ

0 голосов
/ 06 мая 2020

Я так понимаю, это какая-то внутренняя база вашего приложения? Это правильно? Это предполагает, что на клиенте приложения установлен сервер Sql (что является рискованным предположением)

Тем не менее, если вы хотите, чтобы данные были доступны только для вашего приложения, я бы предложил использовать базу данных SqlLite (база данных в виде файла в папке приложения)

Вы можете защитить его паролем, как описано здесь: Защита паролем базы данных SQLite. Возможно ли это?

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

...