gpt4 book ai didi

winforms - .net 桌面应用程序中的连接字符串安全性

转载 作者:行者123 更新时间:2023-12-04 21:26:45 26 4
gpt4 key购买 nike

我正在开发一个 .net winforms 桌面应用程序,该应用程序旨在在由于银行中央节点的连接问题而导致主要应用程序(Web 应用程序)不可用时作为备用应用程序在几家银行的分行运行。除了 SQL-Server 数据库之外,这些分支本身不计入任何企业服务。因此,应用程序应该能够直接连接到 SQL-Server。当我必须为应用程序提供密码以连接到数据库时,我的问题就出现了:

1) 不能将密码以明文形式存储在 app.config 文件或类似文件中(客户要求对密码进行加密)

2) 将加密的密码存储在配置文件中导致需要本地可用的加密 key 。加密 key 可能只是硬编码在应用程序的代码中,但使用 .net-decompiler 或类似工具可以轻松读取。

3) 由于与 2) 相同的原因,使用自定义算法加密/解密也不起作用。

4) 银行不支持综合安全性

此外,客户要求他们应该能够在一个位置(在一个分支内)更改密码,而无需从一台计算机转到另一台更新配置文件(这排除了使用机器 key 加密密码的可能性)在像 asp.net 这样的单个机器的配置文件中)

你会提供任何其他方法或建议来处理这个问题吗?
我将不胜感激任何帮助。
提前致谢,
伯纳贝

最佳答案

我认为以任何方式加密密码都不能解决您的问题。如果用户必须将密码发送到服务器,并且密码位于盒子上,那么根据定义,运行应用程序的用户必须有权访问密码并能够对其进行解密。否则,您将无法对它们进行身份验证。这意味着无论您将密码存储在何处,用户总有办法获取密码。

我可以想到两种可能可行的方法,但恐怕它们并不完全符合您的要求。

  • 删除拥有的要求
    用户将密码发送到服务器
    通过使用某种本地代理
    (例如使用 WCF 窗口
    服务)获取您的winform
    请求,然后将它们发送到您的
    代表数据库服务器。如果你
    使用帐户安装服务
    不同于用户的账户,
    那么您可以通过以下方式保护密码
    其他中提到的任何手段
    答案。他们的关键是让
    确保应用程序用户不
    可以访问的资源
    服务帐号需要解密
    密码。
  • 不要将密码存储在网络配置中。在数据库级别为每个用户分配不同的用户帐户和密码,并让他们在登录时输入。
  • 关于winforms - .net 桌面应用程序中的连接字符串安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2143448/

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