gpt4 book ai didi

c# - "Static"C#应用配置文件加密

转载 作者:行者123 更新时间:2023-11-30 16:10:32 34 4
gpt4 key购买 nike

这是我几个月来一直在思考并在互联网上搜索的问题。

在特定的场景中,我在连接到数据库的网络共享上有一个应用程序以检索一些信息。数据库的连接字符串是静态的,包括用于建立到数据库的只读连接的用户名和密码。显然,连接字符串不能仅以纯文本形式存储,对于从网络上不同计算机启动应用程序的所有用户而言,连接字符串必须保持不变。

这是我未能以令人满意的方式破解的坚果:

到目前为止,我发现的所有教程都使用内置的 .net 函数来保护 app.config 文件的连接字符串部分(如 RSAProtectedConfigurationProvider),这非常适合用户范围的加密,但不能用于描述的场景,因为 rsa 容器是为特定用户/计算机生成的,因此只有这个用户/计算机能够从曾经加密的配置文件中读取 - 或者我在这里遗漏了一点?

我最后的尝试是编写一个以某种方式混淆的方法来在应用程序内部生成一个静态字符串,用它加密我的连接字符串并在每次需要建立数据库连接时调用它。这样可以完成工作,但通过简单的反编译程序、提取加密/解密方法并将其应用于同样提取的连接字符串,也不是很难被黑客攻击。

我想知道是否有一些技术可以保护应用程序范围内的连接字符串等敏感数据,因此它只被应用程序本身所知,并且对所有用户都是静态的,但不能通过简单地反编译程序来提取。

也许我在这里完全想错了盒子,但我发现它很模糊,似乎没有针对这个看似常见的问题的开箱即用的解决方案。

最佳答案

你是对的。没有办法 100% 保护您的加密数据,除非您可以将您的加密 key 100% 保密。不幸的是,在这种情况下,混淆或“通过模糊保护”仍将是您的最佳选择。

作为替代方案,您应该通过为数据层创建网络服务来将共享应用程序与数据库分离,并让您的应用程序访问该服务,而不是直接访问数据库。保护 Web 服务的最简单方法是为其启用集成的 Windows 身份验证,并确保您的客户端应用程序在访问它时使用默认用户的域凭据,使用凭据缓存。在 .NET 中实现很简单。

从可扩展性和性能的角度来看,Web 服务方案也是更可取的,特别是如果您的客户端应用程序实例要从不同的办公室运行:非常不建议通过 WAN 链接或 Internet 直接调用数据库,因为协议(protocol)非常健谈。与您的数据库位于同一位置的 Web 服务是一个更好的解决方案,尤其是在使用远程客户端时,因为所有调用都降级为每个调用的单一请求-响应类型的流量。 (或者,当进行身份验证时,可能需要两次往返。)

关于c# - "Static"C#应用配置文件加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25671617/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com