1

我正在编写一个数据库驱动的 Windows 应用程序,并且可执行文件和数据库都需要安装在客户机器上。

是否有一个数据库可以用作我的应用程序的后端,即使用户使用的是存储数据库的同一台机器,用户也无法进入。

据我所知,Postgres 对此不起作用,而且我尝试过的访问版本很容易破解密码。

我的应用程序必须能够安装在笔记本电脑上,并且即使在没有互联网访问的情况下也可以使用,因此通常的客户端-服务器数据库模型不起作用。

我曾考虑在某些版本的 linux 上使用安装了 Postgres 的 VMWare 虚拟设备,但这会产生相当大的系统负载。

我宁愿不必使用加密的文本文件或类似的东西。

4

3 回答 3

2

由于用户(或黑客)拥有这台机器,因此您无法采取任何措施来确保它的安全。您尝试的任何事情都将属于名为Security Through Obsecurity的类别。

您最好的选择是加密您的数据库并尝试将密钥隐藏在二进制文件中某个不起眼的地方。由于这是一个已安装的应用程序,因此不要使用数据库服务器。只需使用像 Postgres 这样的数据库库。

于 2009-08-14T04:39:32.560 回答
1

数据有多重要?使用标准 RSA 或 AES 加密系统上的数据,并在您的应用程序中存储和加密密钥,这将使您的妈妈和爸爸用户远离。

但是,如果您不能将秘密隐藏在客户端应用程序之外,那么您将在这里遇到麻烦。

于 2009-08-14T04:34:06.657 回答
0

有几个选项可供您使用,具体取决于您的预算。

首先,我使用带有 .NET 程序的SQL Server Compact Edition 3.5来创建一个加密的本地数据库。好消息是该文件已加密,只有在您有密码的情况下才能访问。坏消息当然是您的密码可能会在您的连接字符串中,除非您执行种子 PRNG 之类的操作来为您生成密码。此外,SSCE 要求它独立于您的应用程序进行安装——如果用户出于任何原因通过控制面板卸载它,您的应用程序将无法运行。

其次,我还使用了一个商业产品VistaDB,它还支持加密的本地数据库文件。在他们的网站上有 VistaDB 与其他数据库引擎的比较功能——但他们提供的另一件事是他们没有必须预先安装的运行时——你只需在你的发行版中添加另一个程序集(他们声称你可以静态链接它,但我没有亲自尝试过)。磁盘上的本地文件也是用 VistaDB 加密的,没有密码就无法访问底层数据库。

祝你好运!

于 2009-08-14T04:49:39.313 回答