Firebird数据库密码

4
我想知道如何保护Firebird数据库,使其只能被应用程序打开而不能被其他用户打开。如果我分发一个包含单个文件的Firebird数据库的桌面应用程序(非嵌入式),如何防止数据库被复制到另一台已知sysdba密码的Firebird服务器上?
我搜索了相关主题的问题,只找到了这个链接:Finding a legacy firebird/Interbase database password。如果该帖子中的答案是正确的,如何使用桌面应用程序和Firebird数据库,并禁止任何用户在另一台机器上打开它?或者我应该使用其他数据库,比如MySQL或PostgreSQL?
PS:我使用Delphi 2006开发GUI。
3个回答

5
你在考虑Firebird数据库密码时是错的——该服务器是开源的,所以没有办法实现你想要的。用户可以简单地重新编译服务器,并将密码检查注释掉。
基本上你只能做两件事:
1. 编写自己对Firebird服务器的修改,使其生成与所有其他服务器不兼容的数据库文件。然后即使人们可以将数据库转移到另一台机器上,标准服务器可执行文件也无法访问数据库中的数据。
2. 将加密数据写入文件,这样访问数据库就不再重要。
当然,两者都不是绝对可靠的,因为一个有决心的黑客可以简单地使用您自己的应用程序来获取数据。有权附加调试器到正在运行的进程可能足以在任何时间点停止执行您的应用程序并检查 RAM 中的(解密)数据。有关此主题的更多信息,请参见 SO 问题 "如何增加 Delphi 中的内存安全性?",特别是this answer
顺便说一下:无论您选择哪种数据库引擎,都可以做到这一点,以回答您问题的最后部分。

3
如何使用桌面应用程序与Firebird数据库,并禁止任何用户在其他机器上打开它
如果您的意思是用户拥有加密数据和密钥,那么您正在进行数字版权管理。明确的答案是:您无法做到。您可以通过不同的方法隐藏密钥来减缓用户的速度,但是您不能阻止他们。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接