为什么 app.config 中的加密数据可以从另一个程序读取

本文关键字:另一个 程序 读取 数据 config app 加密 为什么 | 更新日期: 2023-09-27 18:31:17

我的App.Config文件中有一个由DataProtectionConfigurationProvider提供者加密的ConnectionString,并且在解决方案A中一切正常。

然后,我构建另一个解决方案(解决方案 B),并将该App.Config文件添加到其项目中。 并尝试解密该配置文件,令人惊讶的是 一切也正常! 虽然我希望第二个解决方案无法解密ConnectionString.
假设我部署了这个项目,在安装时,询问SqlConnection信息,如USERIDPASSWORD然后解密它们并将其放入App.Config文件中。一切都好!但是,如果其他人尝试添加生成的App.Config文件(在最终用户机器中)并解密我的ConnectionString,会发生什么?
我们尝试加密此类数据,以便没有其他人(除了我们的程序)可以接触数据。

  • 有人使用解决方案 B 触摸我的数据是否合乎逻辑?
  • 如果是这样,我该怎么做才能确保我的数据安全?
    ----------编辑------------
    顺便说一下,我正在使用用户级解密,该项目是一个 Windows 应用程序而不是 Web 应用程序

为什么 app.config 中的加密数据可以从另一个程序读取

如果您

确实想要确定,保护应用配置中的数据意味着使用特定于应用的密钥进行加密,并将结果作为 BASE64 编码字符串存储在配置设置中。

在写入数据之前,必须使用文本编码将文本转换为字节数组。然后加密该数组,然后将生成的数组转换为 base64 编码字符串,然后将其存储在配置中。

在检查数据之前,必须解码 base64 编码,解密结果信息(字节数组),然后使用相同的文本编码从字节数组转换为实际文本。

如果你真的想成为一头猪,你使用不对称算法——用私钥编码,用公钥解码。这意味着不仅配置数据难以读取,而且无法修改(因为您不会在应用程序中提供私钥 - 只有公钥)。

加密密钥存储在机器级别或用户级别(我不确定您如何决定使用哪个),因此在同一台机器/用户上运行的任何程序都可以解密字符串。

您正在使用错误的工具来完成这项工作,数据保护配置提供程序是什么,以防止有人获得您的网站/程序的数据转储(主要用于IIS)并能够使用不同的计算机/用户连接到您的后端数据库。

不幸的是,我不知道适合

您的情况的"适合工作的工具"是什么。"从运行用户的计算机中隐藏数据"非常困难。我能提出的唯一建议是去阅读我的这个老问题,我问了一个类似于你的问题,以及我的这个旧答案,我回答了一个关于人们黑客/破解你的应用程序的问题。