不使用配置文件发布版本

时间:2016-03-27 07:59:35

标签: c# .net winforms visual-studio

我试图在几个不同的位置发布我写给多台计算机的软件。该程序本身是一个Windows窗体应用程序。为了安装它,我添加了一个安装项目,它也可以完美地运行。所有文件都被复制到正确的文件夹,以及用户在安装过程中可以做出的选择,没有任何缺陷。但是:

唯一的问题是配置文件包含敏感数据,例如SQL连接字符串,也会被复制/安装在目标计算机上。

有没有办法在应用程序中为用户存储这些数据不可读? 我考虑过将它写在一个类中,因为应用程序被混淆了,但我不确定这是否足够安全,如果这真的是一种方法......

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

配置文件/数据不可能仅用于程序而不能用于用户,因为您可以反编译程序并搜索连接字符串,但您可以尽可能地向用户提供。 您还可以编写一个php脚本或其他检查请求的内容,如果脚本发现用户垃圾邮件请求或发送垃圾数​​据,则可以阻止来自特定ips的请求。 也许你也可以创建一个新的数据库用户,它限制了写入和读取权限,这样用户就没有机会用连接字符串做坏事。

答案 1 :(得分:0)

您可以使用嵌入在代码本身中的私钥以及混淆方案来加密保护敏感文件。这比将所有敏感配置数据嵌入到代码中更好,因为只有在配置更改时,您才不需要重新构建测试版本。

理论上,如果在用户模式下运行的应用程序可以 - 显示 - 访问普通敏感数据,那么用户也可以访问(去混淆,内存转储等)。由于生成或解密敏感数据所需的所有信息都是脱机存在的(代码,磁盘,内存),只要有足够的技能,就可以通过检查代码(甚至是机器代码)来确定解密方案

将应用程序视为具有快速计算和大量内存技能的用户,因此它可以动态地对代码进行去模糊处理并执行所需的计算以解密“安全”数据