Как улучшить защиту на MS Access MDB помимо защиты паролем?
У меня есть доступ к MDB, который защищен паролем, но который может быть легко взломан с помощью бесплатного инструмента, найденного в Google в течение 1 секунды. Помимо оплаты некоторых дорогих инструментов, есть ли хороший способ защиты файла базы данных ms access? Я думаю о том, чтобы затем зашифровать его с помощью DLL, чтобы расшифровать его, получить некоторые данные и передать его стороннему приложению, а затем, когда соединение установлено, снова зашифровать файл.
Если кто-то захочет прокомментировать ошибочность этого метода или у него есть другие ресурсы, инструменты и т. Д., Это было бы здорово.
Спасибо:)
7 ответов
Доступ это старая база данных, почему бы не SQL Express 2005 (ведь это бесплатно)? вы получите больше информации о безопасности, и внутри вашего приложения вы используете user/pwd в соединении, которое никто не узнает и не сможет увидеть... если они попытаются открыть SQL, они увидят только имя базы данных и больше ничего (не забудьте использовать проверку подлинности SQL, а не проверку подлинности Windows)
если вы используете.NET, в программе установки вы можете указать устанавливать приложение только после установки SQL 2005 Express или, если вы используете другой язык, используйте InstallShield, FinalBuilder и т. д., чтобы сделать то же самое...
:)
Ваша идея "борется" со мной, когда я думаю, что... Access начал иметь низкое время отклика с более чем 30 тысячами строк в одной таблице (цитата из Microsoft), и если вы собираетесь создать слой для шифрования / дешифрования данных.. Ваше приложение просто перестанет работать медленно... не будет ли это хорошей идеей?
Я за то, чтобы использовать Jet везде, где это уместно, но когда вы начинаете беспокоиться о защите данных паролем, выходящим за рамки безопасности NTFS и Jet ULS, вы находитесь на территории, где вам нужно использовать другое хранилище данных.
Но позвольте мне сказать это:
Безопасность - это не технологическая проблема, а проблема людей. Никакая безопасность не защитит вас от пользователя с правами администратора, который желает вам болезни. Вы всегда должны доверять людям достаточно, чтобы дать им разрешение на просмотр и редактирование ваших данных. Слишком часто акцент делается на том, чтобы не допустить несанкционированных пользователей к вашим данным, а не на разработку вашего приложения для защиты ваших данных от ущерба, который может быть нанесен авторизованными пользователями. Первый довольно прост, а второй требует действительно тщательного внимания не только к настройкам безопасности, но и к тому, как вы разрабатываете свое приложение.
И, наконец, вы должны доверять людям, чтобы они вели себя ответственно, и Jet или SQL Server ничего не могут сделать, чтобы помочь вам в этом.
Как насчет обновления из формата MDB в формат ACCDB (Access2007)?
Начните с безопасности Access 2007
"Средство шифрования в Office Access 2007 объединяет и улучшает два более старых инструмента - пароли базы данных и кодирование. Когда вы используете пароль базы данных для шифрования базы данных, вы делаете все данные нечитаемыми для других инструментов и вынуждаете пользователей вводить пароль для использовать базу данных. Шифрование, применяемое в Access 2007, использует более сильный алгоритм, чем в предыдущих версиях Access..."
Мне непонятно, прочитав ваш пост, пытаетесь ли вы только защитить данные, или если вы пытаетесь защитить что-то еще, например, скажем, исключительно код VBA. Вы говорите, что у вас есть файл MDB, но вы работаете с Access 2003, 2007 или другой версией? Планируете ли вы развернуть свое решение Access на интранет-сайте? (Для моих комментариев ниже я собираюсь предположить, что вы).
Я согласен с другими авторами, что если у вас есть возможность рассмотреть другие решения перед развертыванием решения на основе Access, вам следует. Однако, если вы не можете избежать решения на базе Access, я хотел бы поделиться следующими предложениями и / или комментариями.
Если вы работаете с Access 2003, возможно, вы захотите рассмотреть безопасность на уровне пользователей и групп (настройка и настройка безопасности на уровне пользователей / групп недоступна в базах данных формата Access 2007 (accdb), однако Access 2007 будет распознавать разрешения пользователей / групп из файлов mdb). С помощью безопасности на уровне пользователя / группы вы можете ограничить доступ к своей базе данных на основе определенных пользователей и рабочих групп. Для получения дополнительной информации - [ http://office.microsoft.com/en-us/access/HP051882261033.aspx][1]
Рассмотрите возможность разделения вашей базы данных (держите ваши данные отдельно от объектов приложения, таких как формы, отчеты) и / или создавайте разные версии, ограничивающие доступные объекты.
Держите мастера по дизайну и реплики по производству. Это согласуется с предыдущим комментарием, где идея заключается в том, что не все на столе для принятия. Возможно, вы захотите взглянуть на Access Developer Extensions (если вы этого еще не сделали), который доступен на 2003 и 2007 годы (можно бесплатно загрузить и установить у Microsoft).
По возможности применяйте политики, которые препятствуют и / или ограничивают доступ сотрудников или сотрудников (опять же, я предполагаю, что вы развертываете в корпоративной сети компании)
Кодируй свою базу данных. Это усложнит получение информации о свойствах ваших таблиц, кода VBA, поскольку база данных будет сжата, а любая информация уровня проектирования будет удалена или труднее получить доступ.
Наконец, если у вас есть время, ресурсы и / или находящаяся поблизости библиотека / книжный магазин с доступной копией, я рекомендую вам проверить освоение Microsoft Office Access 2003 Элисон Балтер, ознакомьтесь с разделом "Разработка многопользовательских и корпоративных приложений", в котором есть раздел по безопасности. Обновлено для ACCESS 2007: освоение Элисон Балтер Microsoft® Office Access 2007
Для настольного приложения я бы предложил вам пойти по пути Sql Server Compact Edtition (SQLCE). Или, если у вас есть немного денег, VistaDB (в отличие от SQLCE он поддерживает хранимые процедуры, представления и триггеры). Вы получите лучшую безопасность, лучшую производительность, меньше хлопот с обслуживанием и коррупцией и более простое развертывание.
Сохранение данных в зашифрованном формате было бы решением. Если пароль "терпит неудачу", взломщик должен также расшифровать данные
Какой бы метод вы ни использовали, он может быть взломан кем-то знающим.
Это действительно зависит от того, насколько ценны данные: если они действительно ценны, я бы использовал другую модель, например, разместил базу данных за сервером в Интернете. Тогда вы сможете ограничить количество запросов, а также отфильтровать их от неправильного использования.
Если утечка может быть обнаружена или имеет ограниченное использование, лучше защитить данные с помощью лицензионного соглашения. По крайней мере, тогда у вас может быть способ возместить свои убытки. Обратите внимание, что OED недавно снял свою защиту от копирования.
Также подумайте о будущем: некоторым сетевым администраторам через 10 лет может потребоваться законно получить доступ к данным, и использование простого пароля покажет, что данные должны быть защищены, но все же разрешить обход.