用于Windows应用程序的安全数据库后端,用户无法轻松入侵

时间:2009-08-14 04:29:58

标签: c# security postgresql backend localsystem

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

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

据我所知,Postgres不会为此工作,我尝试过的访问版本很容易破解密码。

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

我考虑过在某些版本的Linux上安装Postgres使用VMWare虚拟设备,但这会导致系统负载过重。

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

3 个答案:

答案 0 :(得分:2)

由于用户(或黑客)拥有该计算机,因此您无法做任何事情来确保其安全。您尝试的任何内容都属于Security Through Obsecurity类别。

您最好的办法是加密数据库,并尝试在二进制文件中的某个不明显位置隐藏密钥。由于这是已安装的应用程序,因此请勿使用数据库服务器。只需使用像Postgres这样的数据库库。

答案 1 :(得分:1)

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

但如果您无法将密码保留在客户端应用程序之外,那么您将遇到麻烦。

答案 2 :(得分:0)

根据您的预算,您可以使用多种选项。

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

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

祝你好运!