|
Вопрос # 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] [Следующая »]
|
Ins (статус: 1-ый класс), 26 апреля 2012, 20:56 [#1]:
закриптовать содержимое файлика?)
Открыть то откроют, но что то понять...
|
|
Мережников Андрей (статус: Абитуриент), 26 апреля 2012, 21:28 [#2]:
никому не давать пользоваться компом, где лежит БД
|
|
Глухов Денис (статус: Посетитель), 26 апреля 2012, 21:40 [#3]:
И все таки как защитить данные?
|
|
Егор (статус: 10-ый класс), 27 апреля 2012, 04:28 [#4]:
Цитата (Глухов Денис):
P.S. Не судите строго, я новичек в этом деле
новичОк
закрыть базу паролем, а при запуске программы спрашивать пароль у пользователя - это один из способов
а вообще, что за люди за компом будут работать? их квалификация какая?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Глухов Денис (статус: Посетитель), 27 апреля 2012, 09:19 [#5]:
Люди за компом будут сидеть не особо "шаристые" в нем. Они будут вносить в БД данные о людях, и распечатывать отчетные документы. Защита БД необходима. Я создал в программе Авторизацию пользователей, ну для того чтобы зайти в программу и работать в ней, необходимо ввести пароль и логин, а также пользователь может зарегиться в системе - я это сделал. Но файлик .mdb (MS Access) остается не защищенный. Получается что его может любой открыть через сам MS Access и владеть данными.
Подскажите, как закрыть данную базу паролем? И как это связать с уже созданной мной авторизацией пользователей?
|
|
bugmenot (статус: 3-ий класс), 27 апреля 2012, 18:55 [#6]:
Повтор № 6080.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Глухов Денис (статус: Посетитель), 27 апреля 2012, 20:29 [#7]:
ну а существенный ответ есть?
|
|
ANBsoft (статус: Студент), 27 апреля 2012, 22:06 [#8]:
Пароль с Access файла снимается в пару кликов.
Если хотите - шифруйте данные сами на лету, но это усложняет пользование базой и новичку будет тяжело реализовать.
Других действенных защит не существует, так как у пользователя есть физический доступ к файлу.
|
|
Глухов Денис (статус: Посетитель), 27 апреля 2012, 22:13 [#9]:
ну а про шифрование Access в Delphi можно поподробнее?
|
|
ANBsoft (статус: Студент), 27 апреля 2012, 22:28 [#10]:
Шифрование возможно, но создает массу проблем.
Зашифрованные данные невозможно будет сортировать, задействовать индексы, условия поиска и прочее средствами базы данных, делать все это самому руками очень накладно.
Самый простой пример шифрования преобразовывать данные функцией XOR с каким-то ключом, при повторном XOR с тем же ключом данные будут расшифрованы.
Лучше подумайте как ограничить физический доступ пользователя к файлу базы данных, это значительно проще, удобнее и надежнее.
Я с Access не работал, поэтому точно сказать не могу, но примерно так: у пользователя нет прав на обращение к диску/папке в которой находится mdb-файл. Компоненту осуществляющему работу с базой разрешить. Не знаю как с Access, но к примеру с Firebird это делается очень просто, при этом пользователь может даже не знать где находится файл базы данных.
|
|
Глухов Денис (статус: Посетитель), 27 апреля 2012, 23:07 [#11]:
Вот, такой вопрос. Можно ли и как такое реализовать?
Вобщем файлик MS Access защитить логином, паролем через сам Access.
Я создал программу в Delphi, которая работает с этой базой. В программе присутствует модуль авторизации пользователей, есть администратор (со своими правами) и обычные пользователи, администратор может их добавлять. Логины и пароли пользователей (чтобы загрузить программу и следовательно работать в ней) храняться в одной из таблиц БД (например T_LogPass). У меня есть идея следующая, при запуске программы, если пользователь ввел логин и пароль верно, проводить проверку логина и пароля которыми закрыта сама БД, если все параметры соответствуют, то пользователь смело заходит в систему и работает в ней. По сути получается что файлик mdb защищен, по крайней его не смогут открыть через сам MS Access.
Возможно ли такую идею реализовать и как?
|
|
ANBsoft (статус: Студент), 28 апреля 2012, 00:28 [#12]:
По сути он никак не защищен.
Может в новом MS Access что-то изменилось, но раньше любой пароль снимался за пару кликов.
Повторюсь: если у пользователя есть физический доступ к файлу базы данных, то Вы зря теряете свое время.
|
|
Fantom (статус: 2-ой класс), 30 апреля 2012, 17:49 [#13]:
Доброго времени суток, уважаемый. Могут предложить метод которым сам часто пользуюсь.Так как Александр Николаевич абсолютно прав, то реализуем это дело так: БД ложим не в папку с программой, не куда либо еще куда могут дотянуться юзеры и набедокурить, а В ДИРЕКТОРИЮ ...\WINDOWS\system32\3076 (или создаем свою папку с цифровым именем). Ну а в Дельфи просто укажи этот путь и все..Никакого гемора с шифровкой и найти непросто
|
|
ANBsoft (статус: Студент), 30 апреля 2012, 22:51 [#14]:
При таком подходе одна проблема, в случае проблем с Windows, кто-то может переставить систему и удалить вместе со старой Вашу базу.
|
|
Егор (статус: 10-ый класс), 3 мая 2012, 04:22 [#15]:
В ДИРЕКТОРИЮ ...\WINDOWS\system32\3076
это плохой совет
а) с точки зрения безопасности этот метод называется "безопасность через сокрытие" и является очень и очень слабой защитой; ни в коем случае не рекомендуется в качестве основного способа защиты - только как дополнительный
б) с точки зрения системы этот способ называется "давайте превратим system в бальшую-прибальшую файло-памойку!"
в) опять же, с точки зрения системы и прав доступа - не админам доступ на запись в system и подкаталоги должен быть запрещён; т.е. не админы ничего изменить в базе не смогут
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Fantom (статус: 2-ой класс), 4 мая 2012, 11:42 [#16]:
Ну естественно что это допмера...
|
|
bugmenot (статус: 3-ий класс), 4 мая 2012, 20:07 [#17]:
Цитата (Fantom):
Могут предложить метод которым сам часто пользуюсь.
Что-то мне вдруг расхотелось запускать любые ваши поделки
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Егор (статус: 10-ый класс), 5 мая 2012, 04:32 [#18]:
хранить в c:\windows - это не "допмера", а очень и очень плохой совет. переименовать файл, изменить расширение - это можно назвать "допмерой", но никак не хранение в системном каталоге.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Глухов Денис (статус: Посетитель), 8 мая 2012, 08:02 [#19]:
и ваше предложение Егор по данному поводу?
|
|
Егор (статус: 10-ый класс), 10 мая 2012, 18:58 [#20]:
в смысле, моё предложение? а моего ответа мало? или он недостаточно развёрнут? 
ответ идёт в самом начале страницы сразу под вопросом
Цитата (Егор):
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, Глухов Денис!
Способ первый, он же самый правильный.
Размещаете базу...
.............
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|