0

我正在使用 Borland Delphi 7 中的 dBASE 数据库文件编写应用程序。

注意:我认为这个问题与文件安全​​相关,您可以在这个问题中忘记 dBASE 的东西(将其视为 TXT 文件)。

数据库必须仅由应用程序访问。然后它必须被加密。不幸的是 dBASE 不支持任何密码机制,我不得不自己加密文件(而且我还必须使用 dBASE)

您建议使用什么方法来保护数据库文件?

最简单的是:

  1. 加密数据库文件并将其放置在应用程序 EXE 文件旁边。
  2. 当应用程序运行时,它应该解密文件(使用硬编码的密码)并将结果复制到具有DeleteOnCloseNoSharingPermission标志的临时文件。
  3. 关闭时,应用程序应加密临时 dBASE 文件并用新的加密文件替换旧的加密文件。

我认为这是一种公平安全的方法。但它有两个大问题:

  1. 使用取消删除工具,用户可以恢复和访问已删除的临时文件。
  2. 更糟糕的是:当应用程序运行时,如果系统突然重新启动,DeleteOnClose标志失败并且临时文件保留在硬盘上,用户可以访问它。

至少第二部分有什么解决方案吗?

还有其他解决方案吗?

4

2 回答 2

1

您也可以尝试创建一个基于TrueCrypt文件的容器,挂载它,然后将 dBase 文件放入挂载的加密卷中。TrueCrypt 是免费的(在两种意义上),它可以通过应用程序中的命令行参数访问(在启动前挂载,在退出前卸载)。

于 2010-01-11T00:03:40.420 回答
0

根据您对数据库的操作,您可能只需解密您实际需要的记录即可。例如,您可以基于哈希码(而不是真实数据)构建索引;这会将对数据库的搜索减少到较小的数据集。子集中的每条记录都必须解密,但这可能比解密整个数据库要好得多。

于 2010-01-10T23:55:51.153 回答