【问题标题】:Firebird Database Password火鸟数据库密码
【发布时间】:2010-10-16 07:30:58
【问题描述】:

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

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

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

PS:我使用 Delphi 2006 开发 GUI。

【问题讨论】:

    标签: database firebird


    【解决方案1】:

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

    基本上你只能做两件事:

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

    • 只将加密数据写入文件,这样就可以访问数据库。

    当然,两者都不是万无一失的,因为一个坚定的破解者可以简单地使用您自己的应用程序来获取数据。拥有将调试器附加到正在运行的进程的权限足以在任何时间点停止应用程序的执行并检查 RAM 中的(解密的)数据。另请参阅 SO 问题 "How can I increase memory security in Delphi?",尤其是 this answer,了解有关此主题的更多信息。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        你没有。

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

        【讨论】:

          猜你喜欢
          • 2012-07-12
          • 2011-04-15
          • 1970-01-01
          • 2016-10-31
          • 1970-01-01
          • 1970-01-01
          • 2010-11-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多