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

Winforms asp.net windows窗体-保存应用程序数据的最佳位置,winforms,Winforms,对于Windows.Forms,我有一个应用程序,它需要从我的服务器获取每次安装的唯一安装id,然后保存此数据。因此,一旦注册,安装id将包含在返回服务器的所有通信中。应用程序偶尔会与服务器联系 如何以不易被篡改的方式将这些数据持久保存在客户端上?首先,您应该注意,如果数据位于本地文件系统上,并且您的应用程序可以读取和写入数据,那么确定的用户始终可以对其进行篡改。。。也许不容易,但还是有可能的 你说,你可以考虑很多选项,包括(但不限于): 使用程序集中定义的密钥加密数据:相当安全的是用户没有编

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


如何以不易被篡改的方式将这些数据持久保存在客户端上?

首先,您应该注意,如果数据位于本地文件系统上,并且您的应用程序可以读取和写入数据,那么确定的用户始终可以对其进行篡改。。。也许不容易,但还是有可能的

你说,你可以考虑很多选项,包括(但不限于):

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

同样,所有这些方法都不是防弹的:只要您的程序可以访问数据,高级用户就可以对其进行反向工程并执行相同的操作…

您可以将数据保存在windows注册表中。如果是每用户设置,则使用[HKCU\Software\YourAppName]配置单元键;如果是全局设置,则使用[HKLM\Software\YourCompany]配置单元键。但是,需要对数据进行加密,因为获取这些密钥中的值非常困难

您所说的容易篡改是什么意思?这是ASP.NET还是Windows窗体?