我正在尝试将我编写的软件发布到多个不同位置的多台计算机上。该程序本身是一个 Windows 窗体应用程序。为了安装它,我添加了一个安装项目,它也可以正常工作。所有文件都被复制到正确的文件夹中,并且用户在安装过程中可以毫无瑕疵地做出选择。但是:
唯一的问题是包含敏感数据(例如 SQL 连接字符串)的配置文件也被复制/安装到目标计算机上。
有没有办法在应用程序中存储这些用户无法读取的数据? 我考虑过将它写在一个类中,因为应用程序被混淆了,但我不确定这是否足够安全以及这是否真的是一种方法......
感谢任何帮助!
最佳答案
您可以使用混淆方案使用嵌入代码本身的私钥以加密方式保护敏感文件。这比在代码中嵌入所有敏感配置数据要好,因为当只有您的配置发生变化时,您不需要重建-测试-发布您的应用程序。
理论上,如果在用户模式下运行的应用程序无论如何都可以访问普通敏感数据,那么用户也可以(去混淆、内存转储等)。由于生成或解密敏感数据所需的所有信息都离线存在(代码、磁盘、内存),因此具有足够技能的人可以通过检查代码(甚至是机器代码)来确定解密方案
将应用程序想象成具有快速计算和大量内存技能的用户,以便它可以动态地对您的代码进行去混淆处理并进行所需的计算以解密“安全”数据
关于c# - 发布没有配置文件的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36245139/