【问题标题】:Release build without config file发布没有配置文件的构建
【发布时间】:2016-03-27 07:59:34
【问题描述】:

我正在尝试将我编写的软件发布到多个不同位置的多台计算机上。该程序本身是一个 Windows 窗体应用程序。为了安装它,我添加了一个安装项目,它也可以正常工作。所有文件都被复制到正确的文件夹中,并且用户在安装过程中可以做出的选择没有任何缺陷。但是:

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

有没有办法将用户无法读取的数据存储在应用程序中? 由于应用程序被混淆了,我考虑只在一个类中编写它,但我不确定这是否足够安全以及这是否真的是一种方法......

任何帮助表示赞赏!

【问题讨论】:

  • - 您应该知道应用程序的敏感部分可能包括: 连接字符串等设置和配置。 业务逻辑和验证规则。 访问数据和功能的权限。 - 如果您依赖混淆,您可以将敏感数据存储在应用程序代码或加密设置文件中。混淆使黑客的道路变得艰难而崎岖。但是,如果您想为您的应用程序带来更多保护,您应该考虑使用服务器端解决方案。

标签: c# .net winforms visual-studio


【解决方案1】:

您可以使用嵌入在代码本身中的私钥和混淆方案对敏感文件进行加密保护。这比在代码中嵌入所有敏感配置数据要好,因为当只有配置更改时,您不需要重建-测试-发布您的应用程序。

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

将应用程序视为具有快速计算和海量内存技能的用户,因此它可以动态去混淆您的代码并执行所需的计算来解密“安全”数据

【讨论】:

    【解决方案2】:

    配置文件/数据不可能只对程序可读而对用户不可读,因为您可以反编译程序并搜索连接字符串,但您可以尽可能难地向用户提供。 您还可以编写一个 php 脚本或其他东西来检查请求,如果脚本注意到用户垃圾邮件请求或发送垃圾数​​据,则可以阻止来自特定 ips 的请求。 也许对您来说也足够了,您创建一个具有有限读写权限的新数据库用户,这样用户就没有机会对连接字符串做坏事了。

    【讨论】:

    • 问题是你是否相信用户会反编译你的程序来得到连接字符串?如果答案不是的话,写在代码里就ok了。
    猜你喜欢
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    相关资源
    最近更新 更多