0

问候!

我需要使用我正在开发的应用程序部署一个紧凑型数据库。数据库充当应用程序已经看到的数据的缓存,并且该数据永远不会更改,因此缓存的值永远不会过时。我选择了 SQLite,并且我正在用 C# 编写。

我想保护数据库文件,以便用户无法轻松访问或编辑它们 - 仅保留对我的应用程序的访问权限。现在,一种选择是使用密码保护,这很好,除了使用 Reflector 等工具可以轻松查看接近原始版本的源代码并检查密码/每个文件生成密码的方式并复制它。

有没有关于如何实现这个结果或接近的建议?过去人们有没有做过这样的事情?

谢谢!

4

3 回答 3

4

默默无闻的安全。

如果您的应用程序可以解密它,那么您的用户也可以这样做。

如果你想保证它的安全,你必须自己保管它。最好的办法是将数据库存储在服务器上并通过 Web 服务提供。在您自己的服务器上执行访问控制检查,以便应用程序只能访问它必须查看的数据库部分。

于 2010-06-29T21:06:56.580 回答
1

我没有明确的答案(在发布部署期间混淆您的代码,使密码过长),因为黄金法则是:如果他们可以物理访问可执行文件(替代机器/汽车/门),他们可以进入如果他们想要(并且有技能)。

你所能做的就是让他们为难。

于 2010-06-29T21:07:25.227 回答
0

这个领域不是我的强项,但我可以建议的一件事是考虑一下您实际发送的数据,并确定是否有任何方法可以限制任何更敏感的数据在第一时间传输给客户端地方。

如果您担心向客户端发送诸如 ID 号和帐号之类的内容,那么也许您可以将这些值转换为在您的应用程序之外毫无意义的仅限客户端的版本。您的服务器可能有一个表,其中包含实际值和仅客户端值之间的转换。

假设您将此表存储在服务器的数据库中(而不是客户端数据库!)

RealAccountNumber   ClientOnlyAccountNumber
981723              ABC123
129847              BCD234
923857              CDE345
...

因此,客户端只能在 ClientOnlyAccountNumber 列中看到帐号,并且当客户端向服务器发送请求以对帐户“ABC123”执行操作时,服务器知道将其转换为帐号 981723。

于 2010-06-29T21:25:34.417 回答