| 
| 
 | Вопрос # 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] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |