asp.net windows窗体 - 保存应用程序数据的最佳位置

时间:2009-11-18 00:03:12

标签: winforms

对于Windows.Forms,我有一个应用程序,需要从我的服务器获取每次安装的唯一安装ID,然后保留此数据,因此一旦注册,安装ID就会包含在返回服务器的所有通信中。该应用程序偶尔会与服务器联系。

如何以不易被篡改的方式在客户端上保存此数据?

2 个答案:

答案 0 :(得分:0)

首先,您应该注意,如果数据位于本地文件系统上并且您的应用程序可以读取和写入数据,则确定的用户始终可以篡改它...可能并不容易,但仍然可能

尽管如此,您可以考虑多种选择,包括(但不限于):

  • 使用程序集中定义的密钥加密数据:非常安全的是用户没有编程技能,但高级用户可以反汇编您的应用程序以找到密钥。混淆可能会使提取密钥变得更加困难,但并非不可能。
  • 使用isolated storage:我不确定数据是否加密,但至少它不容易找到,隐藏在深层文件夹层次结构中...不太安全,用户知道在哪里但是看,
  • 以二进制格式编写数据,这使得非专家用户更难阅读或修改
  • 使用一段本机代码加密数据:类似于第一个选项,但是本机DLL比.NET程序集更难拆解,因此需要更多技能才能找到密钥

同样,所有这些approches都不是防弹的:只要你的程序可以访问数据,高级用户总是可以对它进行逆向工程并做同样的事情......

答案 1 :(得分:0)

您可以将数据保存在Windows注册表中。如果是每用户设置,您将使用[HKCU \ Software \ YourAppName]配置单元密钥,如果是全局设置,则使用[HKLM \ Software \ YourCompany]。但是,数据需要加密,因为它很容易获得这些键中的值