首页 > 解决方案 > 在不使用数据库或 .xml 文件的情况下存储敏感数据的最佳方法

问题描述

我正在用 c# 开发一个应用程序,它使用 .xml 文件来获取应用程序逻辑内部使用的信息。启动应用程序的新版本时,会创建一个设置(使用 Inno Setup Compiler),成功安装设置后,.xml 将放置在应用程序的设置文件中。此 .xml 文件包含大约 200 个对象,每个对象具有 4 个敏感数据属性。

我被要求启动应用程序的客户版本,并且此版本的要求是删除此 .xml 文件的访问或操作,因为它包含客户不应看到或操作的敏感数据。

我的高级工程师告诉我在源代码中简单地实现一个列表中的信息,这样就删除了 .xml 文件的使用,并且客户一旦安装了应用程序就无法操纵这些信息,因为它会隐藏在源代码,但这对我来说似乎效率很低,我需要更改很多关于在应用程序中使用 .xml 文件的逻辑才能使其正常工作。

  1. 有没有办法创建应用程序的设置并将此文件隐藏在设置文件中,以便客户无法操作?

  2. 如果没有,您建议我采取什么方法?还是我别无选择,只能以艰难的方式做到这一点?

标签: c#xmlsecurityinno-setup

解决方案


如果您想让最终用户更难修改信息,同时仍然保留一个不需要更改应用程序本身代码的单独配置文件,您可以对文件进行签名并让应用程序验证签名。

最简单的方法是计算文件的哈希值和“秘密”值。当然,它很难防篡改。但归根结底,没有防篡改的方法来防止用户在他/她自己的计算机上操作数据。这只是关于你想做到多难。

更好的方法是使用适当的证书进行签名。应用程序将只知道公钥,并将使用它来验证使用私钥创建的签名,私钥永远不会离开开发团队。


推荐阅读