Как реализовать локальную базу данных в .NET, когда файлы базы данных не могут быть защищены? - PullRequest
2 голосов
/ 11 января 2010

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

Было решено использовать .NET, поскольку я знаю, что C # неплохо работает, и написание GUI довольно просто. Я хотел реализовать локальную базу данных SQL Server (как я работал ранее с MySQL) и подключаться к ней через интерфейс SqlClient. Но потом я обнаруживаю проблему:

Публичный компьютер с установленной базой данных. Даже учетная запись, с которой будет осуществляться доступ к базе данных, находится в свободном доступе. Так что, насколько я знаю, любой, кто принесет переносной MS Access, получит бесплатный доступ к любым данным, хранящимся в базе данных. Возможно, я ошибаюсь, и возможно зашифровать базу данных паролем, независимым от учетной записи пользователя. Но я не знаю, как это сделать (у меня нет MS Access, только базовые Office и Visual Studio Express).

Или, если это невозможно, каков наилучший способ заменить базу данных SQL Server?

Ответы [ 8 ]

4 голосов
/ 11 января 2010

Если файлы базы данных доступны любому, то любой может просто удалить их. Шифрование не помешает этому.


Сказав, что, если вы не можете использовать файловую систему для защиты самих файлов базы данных, вам придется использовать шифрование базы данных. SQL Server поддерживает это.

2 голосов
/ 11 января 2010

Как отметили несколько человек, если файлы базы данных являются общедоступными, то данные являются общедоступными. Шифрование не поможет вам. Переключение на SQLite не поможет; вы должны сделать файлы базы данных закрытыми.

Один из способов сделать это - сохранить базу данных на частном сервере и предоставить данные через общедоступный API-интерфейс через SOAP, REST, веб-сервисы или другие. Интерфейс GUI будет отправлять запросы на частный сервер и отображать результаты.

Рассмотрите возможность сделать приложение веб-приложением; интерфейс GUI становится обычным веб-браузером.

2 голосов
/ 11 января 2010

Возможно, вы захотите проверить SQL Express. Это бесплатно и легко. Он не обладает всеми функциями полностью лицензированного SQL Server, но, вероятно, имеет то, что вам нужно.

SQL Express

2 голосов
/ 11 января 2010

То, что машина общедоступна, не означает, что данные находятся в свободном доступе. Вам нужно исследовать безопасность на MS-SQL. Вы можете ограничить доступ к базам данных, определенным таблицам и хранимым процедурам на уровне пользователя или на уровне группы.

2 голосов
/ 11 января 2010

Рассматривали ли вы SQLite? Для этого есть библиотека .NET, и установка / настройка очень просты. Он работает как «встроенная» база данных, так что это будет просто еще одна DLL и файл данных для вашего приложения.

http://sqlite.phxsoftware.com/

Шифрование для SQLite существует, но я не использовал эту функцию, поэтому не могу лично порекомендовать ее.

1 голос
/ 11 января 2010

Если файловая система должна быть открыта для всех, вам необходимо зашифровать базу данных. Люди, которые предлагают настроить пользователей с ограниченным доступом, ошибаются; это не помешает кому-то просто открыть файлы и посмотреть на данные. Вход в систему для SQL-сервера не защищает вас от простого открытия основных файлов данных в блокноте. Их нелегко понять, но они не зашифрованы.

SQL Server имеет возможность шифровать файлы данных - см. databasejournal.com - но я бы не рекомендовал это делать.

Если можете, посмотрите, как обезопасить компьютер с помощью стандартной защиты файлов Windows. Затем убедитесь, что вы отказываете в разрешении на чтение этих файлов каждому пользователю, за исключением того, на котором запущен SQL Server - обычно это локальный пользователь системы или сети, IIRC.

1 голос
/ 11 января 2010

Если ваши требования к базе данных не слишком велики, вы можете использовать sqlite . Он не имеет «сервера» и не требует аутентификации. Он будет находиться на той же машине, что и ваше реальное приложение в виде файла.

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

0 голосов
/ 11 января 2010

MSSQL или MySQL будет вашим лучшим выбором.Вы можете установить пользователя (независимо от ОС) на обоих и использовать его для входа в систему из своего кода C #.

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