Пароль базы данных Firebird - PullRequest
4 голосов
/ 30 марта 2009

Я действительно хочу знать, как защитить базу данных Firebird от открытия любым пользователем, кроме как из самого приложения. Если я распространю настольное приложение с одной файловой базой данных Firebird (не встроенной), как защитить базу данных от копирования на другую машину, на которой работает Firebird с известным паролем sysdba?

Я искал вопрос, связанный с этой темой, и нашел только следующее: Поиск устаревшего пароля к базе данных firebird / Interbase

Если ответ в этом посте был верным, как использовать настольное приложение с базой данных Firebird и запретить любому пользователю открывать его на другом компьютере? Или я должен использовать другую базу данных, такую ​​как MySQL или PostgreSQL?

PS: я использую Delphi 2006 для разработки графического интерфейса.

Ответы [ 3 ]

5 голосов
/ 05 апреля 2009

Вам не хватает смысла, когда вы думаете о пароле к базе данных Firebird - сервер с открытым исходным кодом, поэтому нет способа сделать то, что вы хотите. Пользователь может просто перекомпилировать сервер с закомментированной проверкой пароля.

В принципе, есть только две вещи, которые вы могли бы сделать:

  • Напишите свои собственные изменения на сервере Firebird, чтобы он записывал файл базы данных, который несовместим со всеми другими серверами. Тогда не имеет значения, что люди могут перенести базу данных на другой компьютер, поскольку стандартные исполняемые файлы сервера не смогут получить доступ к данным в базе данных.

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

И то и другое, конечно же, не является надежным, так как решительный взломщик может просто использовать ваше собственное приложение для получения данных. Наличие разрешения на присоединение отладчика к запущенному процессу может быть достаточным для остановки выполнения вашего приложения в любой момент времени и проверки (расшифрованных) данных в оперативной памяти. См. Также вопрос SO «Как повысить безопасность памяти в Delphi?» , особенно этот ответ , для получения дополнительной информации по этой теме.

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

3 голосов
/ 30 марта 2009

как использовать настольное приложение с базой данных Firebird и запретить любому пользователю открывать его на другом компьютере

Если вы имеете в виду, что у пользователя есть как зашифрованные данные, так и ключ, вы выполняете DRM. Окончательный ответ: вы не можете. Вы можете замедлить пользователя, скрыв ключ разными способами, но не можете их остановить.

0 голосов
/ 30 марта 2009

Вы не.

Это более или менее та же проблема, что и у Pidgin в http://developer.pidgin.im/wiki/PlainTextPasswords,, за исключением того, что она защищает его от некоторых пользователей, а не от других, а не от вашего приложения и не от конечных пользователей.

...