4

我真的很想知道,如何保护 firebird 数据库不被任何用户打开,而是从它自己的应用程序中打开。如果我分发带有单个文件 Firebird 数据库(未嵌入)的桌面应用程序,如何保护数据库不被复制到另一台运行 Firebird 且具有已知 sysdba 密码的机器上?

我搜索了与这个主题相关的问题,只找到了这个:Finding a legacy firebird/Interbase database password

如果该帖子中的答案是正确的,如何将桌面应用程序与 firebird 数据库一起使用并禁止任何用户使用另一台机器打开它?或者我应该使用其他数据库,如 mySQL 或 PostgreSQL?

PS:我使用Delphi 2006 开发GUI。

4

3 回答 3

5

在考虑 Firebird 数据库的密码时,您错过了重点——服务器是开源的,因此无法做您想做的事。用户可以简单地重新编译服务器并注释掉密码检查。

基本上你只能做两件事:

  • 将您自己的修改写入 Firebird 服务器,使其写入与所有其他服务器不兼容的数据库文件。那么人们可以将数据库转移到另一台机器上并不重要,因为标准的服务器可执行文件将无法访问数据库中的数据。

  • 仅将加密数据写入文件,因此可以访问数据库并不重要。

两者当然也不是万无一失的,因为一个坚定的破解者可以简单地使用您自己的应用程序来获取数据。拥有将调试器附加到正在运行的进程的权限足以在任何时间点停止应用程序的执行并检查 RAM 中的(解密的)数据。另请参阅 SO 问题“如何提高 Delphi 中的内存安全性?” ,尤其是这个答案,以获取有关此主题的更多信息。

顺便说一句:无论您选择什么数据库引擎,都可以这样做,以回答您问题的最后一部分。

于 2009-04-05T13:06:47.110 回答
3

如何使用带有firebird数据库的桌面应用程序并禁止任何用户使用另一台机器打开它

如果您的意思是用户同时拥有加密数据和密钥,那么您就是在进行 DRM。确定的答案是:你不能。您可以通过使用不同的方法隐藏密钥来减慢用户的速度,但您无法阻止他们。

于 2009-03-30T05:18:54.263 回答
0

你没有。

这与 Pidgin 在http://developer.pidgin.im/wiki/PlainTextPasswords中的问题或多或少相同,只是它保护的是某些用户而不是其他用户,而不是您的应用程序而不是任何最终用户。

于 2009-03-30T05:38:13.857 回答