gpt4 book ai didi

c# - SQL Server密码的保存方法

转载 作者:行者123 更新时间:2023-11-30 19:56:36 24 4
gpt4 key购买 nike

我们有一个运行多个服务和可执行文件的应用程序。其中一些需要访问 SQL 数据库,因此我需要将 SQL 服务器密码存储在某处。为了避免直接访问密码,密码被加密存储。要解密字符串,可以调用加密 DLL,返回明文密码。困扰我的是,如何避免任何人都可以解密密码。以下选项已被讨论并被丢弃,因为它们或多或少没有解决直接访问明文密码的问题:

  1. crypto dll 包含解密密码所需的所有信息:任何恶意用户都可以调用 DLL 来使用自己的组件解密密码

  2. 使用 DPAPI,我需要将范围设置为 LocalMachine,这意味着登录到本地系统的任何用户都可以解密密码。

2a。使用DPAPI和一个以特殊账户运行的服务组件可以解决“任何本地用户都可以使用DPAPI的Unprotect方法来解密密码”的问题,但是,恶意用户仍然可以使用自己的组件调用加密服务。

  1. 加密 DLL 请求密码,并使用 RijndaelManaged 实例加密/解密。每个调用 DLL 都必须知道密码,这意味着我只是将问题转移到另一个组件。

  2. 集成安全不是一个选项,客户的安全策略拒绝使用 IS

任何指针如何解决这个问题?

最佳答案

如果它是一个公开可用的应用程序,那么您最好避免在 winform 应用程序本身中存储任何 SQL 连接字符串详细信息。

相反,托管 winform 将通过其进行通信的 Web 服务。
这将确保恶意用户无法获取您的 SQL 连接详细信息(至少不能从 winform 应用程序或关联的 dll 中获取)并允许您将 SQL 服务器隐藏在远离网络的地方。

有许多方法可以保护 Web 服务,使其只能由“已批准”的客户端访问。 (用户身份验证 token 等)

关于c# - SQL Server密码的保存方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33496123/

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