Пароль базы данных MS ACCESS - насколько безопасно? - PullRequest
2 голосов
/ 01 декабря 2010

У меня есть программа, написанная на Delphi 7, которая использует базу данных MS Access 2000 в качестве бэкэнда.

У меня есть защищенный паролем файл базы данных MS ACCESS 2000 (* .mdb) с паролем из 16 символов, состоящим из символов Numeral, control, UpperCase и LowerCase.

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

спасибо

Ответы [ 7 ]

3 голосов
/ 01 декабря 2010

MS Access 2010 использует лучшее шифрование и имеет некоторые другие функции. SQL Server Compact Edition обеспечивает гораздо большую безопасность, но все еще подходит для настольных приложений.

В противном случае перейдите к базе данных сервера: mysql, sql server, oracle. У большинства есть бесплатные версии.

3 голосов
/ 01 декабря 2010

Есть ли в любом случае, чтобы сделать это так не извлекается? Затянуть шифрование так сказать?

Это зависит; Вы можете либо изменить свою базу данных и искать более безопасную (например, MS SQL Server Compact Edition), либо, если вы хотите остаться в MS Access, и для вас важна безопасность данных, используйте шифрование важных полей с помощью хорошего шифрования. алгоритм (например, AES).

Если вы собираетесь шифровать свои поля, вы можете сделать это прозрачно в Delphi; каждое поле БД в Delphi является производным от класса TField и имеет два события: OnGetText и OnSetText. OnGetText срабатывает каждый раз, когда вы пытаетесь прочитать данные поля, а OnSetText срабатывает каждый раз, когда вы пытаетесь записать в поле. Вы можете зашифровать данные поля при каждом запуске OnSetText, таким образом, зашифрованные данные будут сохранены в базе данных. С другой стороны, вы можете расшифровывать данные поля всякий раз, когда запускается OnGetText, таким образом, пользователь всегда будет видеть и работать с расшифрованными данными. Весь процесс будет прозрачен для пользователей.

Конечно, вы должны принять к сведению, что шифрование / дешифрование полей каждый раз, когда они читаются или записываются, имеет недостаток производительности в зависимости от количества полей, которые должны быть зашифрованы, их размера, частоты чтения или записи и алгоритма шифрования, который используемый. Лучше просто зашифровать важные поля.

Другим вариантом может быть шифрование всего файла базы данных MS Access и его дешифрование всякий раз, когда к нему подключается ваше приложение, но в этом случае файл защищен, пока ваше приложение не запущено; когда ваше приложение запущено и файл расшифрован; файл доступен другим.

2 голосов
/ 01 декабря 2010

Если требуется безопасность, вам не следует использовать базу данных Jet или любую другую архитектуру базы данных для обмена файлами. Это так просто.

2 голосов
/ 01 декабря 2010

Какова цель этого пароля базы данных, если это так?

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

Есть ли способ сделать его таким, чтобы его нельзя было найти?

Прекратить использование Access.

Ужесточить так сказать шифрование?

Нет в Access.Однако если вы перестанете использовать Access и будете использовать реальную базу данных, вы обнаружите, что у вас также может быть реальная безопасность.

1 голос
/ 01 декабря 2010

Какова цель этого пароля базы данных, если это так?

Цель состоит в том, чтобы заставить людей перейти на MS SQL Server и купить лицензии для этого.Есть вещи, которые MS никогда не исправит.

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

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

РЕДАКТИРОВАТЬ: Вот цитата непосредственно из MS

Примечание Хотя модель и методы, описанные в этой статье, повышают безопасность, самый безопасный способ помочь защититьваши данные Access предназначены для хранения ваших таблиц на сервере, например на компьютере под управлением Windows SharePoint Services 3.0 или Microsoft Office SharePoint Server 2010.

0 голосов
/ 01 декабря 2010

Я также разместил этот вопрос на Эксперт-Бирже. Это такой ответ, который я искал (не критика). Хотя этот человек в конце концов говорит мне переключить базы данных, он ясно объясняет почему, без критики:

DatabaseMX:

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

«В любом случае, сделать так, чтобы его нельзя было извлечь» Нет, это только немного лучше, чем ничего, в зависимости от вашей конкретной среды, где будет использоваться mdb.

"Какова цель этого пароля базы данных, если это так?" Это была просто плохая реализация. Период.

Для A2003 и более ранних версий лучшее, что вы можете сделать, - это сочетание следующих факторов: 1) пароль БД 2) Добавить безопасность на уровне пользователя 3) Создать MDE для защиты кода. Но если MDE может быть взломан.

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

х

0 голосов
/ 01 декабря 2010

Используйте crypt aes вместо стандартного механизма.

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