|
Вопрос # 6 101/ вопрос решён / |
|
Здравствуйте!
Подскажите пожалкйста. Создал приложение БД в делфи, посредством технологии ADO (файл MS Access). В файле базы содержится несколько таблиц. В данных таблицах содержится личная информация о людях, поэтму появилась необходимость как-нить защитить данные (зашифровать). Чтобы данный файлик БД (Access), не смогли открыть через сам MS Access, а только через созданное приложение. Подскажите как это реализовать? Заранее спасибо!
P.S. Не судите строго, я новичек в этом деле
 |
Вопрос задал: Глухов Денис (статус: Посетитель)
Вопрос отправлен: 26 апреля 2012, 20:53
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, Глухов Денис!
Способ первый, он же самый правильный.
Размещаете базу на выделенном компьютере. К этому компьютеру могут иметь доступ очень ограниченное число людей. Это будет сервер. На нём запускается система управления базой данных (СУБД). Все остальные компьютеры подключаются к этой базе данных по сети. Соответственно, каждому подключившемуся отдаются лишь те данные, к которым он имеет доступ. Возможно, нужно будет ограничить ещё и объём данных, который пользователь может скачать за день/неделю. Это чтобы пользователь не смог выкачать всю базу (если он имеет доступ ко всей базе).
На выделенном сервере не должно быть больше ничего запущено - только сервер СУБД.
Как вариант - если СУБД будет слабо нагружена, а мощности копьютера надо использовать более полно, то можно на выделенном сервере разместить несколько виртуальных машин и одну из них целиком отдать базе.
Способ второй. Намного хуже.
Этот способ для случая, когда база располагается на том же компьютере, за которым сидят пользователи. Создаём нового пользователя - администратора базы данных. Под его учёткой запускается сервер СУБД и постоянно висит в фоне. Такие процессы называют "службами" или "сервисами" (service). Все пользователи соединяются не с базой данных, а с сервером СУБД. Папку администратора базы можно закрыть для доступа всем остальным. Плюс к тому, можно эту папку зашифровать. Тогда даже администратор компьютера не сможет прочитать базу.
Минус - где-то надо хранить пароль учётки администратора базы данных. И, честно говоря, как запускать сервисы под другой учёткой в винде, я не знаю, т.к. не было у меня такой необходимости.
Способ третий. Комбинированный.
Сервер СУБД запускается в выделенной виртуальной машине. Все клиенты подключаются к этой виртуальной машине. Файловая система на виртуалке шифруется. Так что если кто-то и утащит файл виртуальной машины, всё равно он не сможет открыть файл базы данных.
Ещё несколько слов.
Хранить учётные записи в самой базе в виде отдельных таблиц - плохо. Авторизация не должна быть перемешана с бизнес-логикой. Не надо создавать отдельные таблицы с именами пользователей и паролями (надеюсь, не в открытом виде?). Microsoft Access поддерживает авторизацию пользователей. Надо пользоваться встроенными возможностями. Тогда открыв базу в аксессе, атакующий увидит предложение авторизоваться, а после авторизации сможет получить доступ только к тем данным, которые ему открыты. Не знаю, насколько легко вскрыть защиту аксесса, особенно последних версий - возможно, Майкрософт хорошо поработала в этом направлении.
Ну и, гугл вам в помощь, конечно же.- там много чего прочитать можно
 |
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 5 мая 2012, 04:55
Оценка за ответ: 5
Комментарий к оценке: полное разъяснение
|
Мини-форум вопроса
Всего сообщений: 21; последнее сообщение — 10 мая 2012, 19:28; участников в обсуждении: 7.
Страницы: [« Предыдущая] [1] [2]
|
Глухов Денис (статус: Посетитель), 10 мая 2012, 19:28 [#21]:
я не внимательно прочитал вош ответ
|
11 мая 2012, 16:10: Статус вопроса изменён на решённый (изменил модератор DNK)
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|