【发布时间】:2019-11-21 18:32:06
【问题描述】:
我正在使用 c++ builder 编写一个 Windows VCL 桌面。该应用使用 Firedac 和 SQLite 数据库。
我想保护这个 SQLite 数据库:
- 只有我的 vcl 应用可以连接并使用它
- 其他程序和人不能使用 SQLite 文件
到目前为止,我发现我能做的最简单的事情是加密,这样任何没有正确密码的人都会收到类似“此文件不是数据库”如果他试图打开它。
是的,我们可以使用 Embarcadero VCL,doc. 使用 TFDSQLiteSecurity 组件和这些行来做到这一点:
FDSQLiteSecurity1->Password = "";/* we are protecting (encrypting) our uncyphered database*/
FDSQLiteSecurity1->ToPassword = 'newpassword';
FDSQLiteSecurity1->ChangePassword();
很遗憾,VCL Firedac 应用无法连接到加密的 sqlite 数据库,因此必须先对其进行解密。
为了使事情正常进行,我的程序启动并解密数据库(删除密码),然后连接到数据库并使用它。完成后,我再次重新加密数据库(关闭应用程序时)。
问题: 在此期间(我的程序已启动并运行且数据库未加密)我可以阻止其他程序打开 SQLITE 数据库吗?有没有更好的方法,我愿意接受任何建议
【问题讨论】:
标签: sqlite delphi encryption c++builder firedac