【发布时间】:2014-09-04 17:29:38
【问题描述】:
这是我几个月来一直在思考和搜索的问题。
在特定的场景中,我在网络共享上有一个应用程序,它连接到数据库以检索一些信息。 数据库的连接字符串是静态的,包括用于建立与数据库的只读连接的用户名和密码。 显然,连接字符串不能只以纯文本形式存储,对于从网络中不同计算机启动应用程序的所有用户来说,连接字符串必须保持不变。
这是我未能以令人满意的方式破解的坚果:
到目前为止,我发现的所有教程都使用内置的 .net-functions 来保护 app.config 文件的连接字符串部分(如 RSAProtectedConfigurationProvider),这非常适合用户范围的加密,但不能用于所描述的场景,因为 rsa 容器是为特定用户/计算机生成的,因此只有这一个用户/计算机能够从曾经加密的配置文件中读取 - 还是我在这里遗漏了一点?
我最后的尝试是编写一个以某种方式混淆的方法来在应用程序中生成一个静态字符串,用它加密我的连接字符串,并在每次需要建立数据库连接时调用它。 这可以完成工作,但通过简单的反编译程序并不难被破解,提取加密/解密方法将其应用于也提取的连接字符串。
我想知道是否有一些技术可以保护应用程序范围内的连接字符串等敏感数据,因此它只有应用程序本身知道并且所有用户都知道它是静态的,但不能通过简单地反编译程序来提取。
也许我在这里认为完全是在错误的盒子里,但我发现对于这个看起来很常见的问题似乎没有开箱即用的解决方案非常模糊。
【问题讨论】:
标签: c# encryption configuration-files