从旧版桌面应用程序中删除密码的最佳方法
Best approach to removing password from legacy desktop apps
我有 10 多个遗留 VB6/VB.NET 应用程序。他们建立与数据库的连接(ODBC/Thick 客户端)。连接字符串都是源代码中的纯文本字符串。我当前的任务是删除所有出现的数据库密码;我正在尝试确定最佳方法。
到目前为止我已经 gathered/decided:
仅使用 app.config 是不够的。生产数据库密码将位于用户机器上的 appname.manifest.config 中……以纯文本形式!无法满足我的需求。
Encryption/Decryption(app.config 与 ConfigurationManager .NET class)主要 load/close 事件是一个选项。这是一个好吗? Tim Corey 说不要这样做..呃.
我的 Web 服务使用的 IIS 站点上有所有可用的数据库密码。它们正确存储在连接字符串 (web.config) 中。我能够从 Web 服务中检索它们。为什么我不应该使用 Web 服务来 return 正确的连接字符串?出于安全原因 - 授权和身份验证..仅此而已吗?
使用 Web 服务调用 return 数据库密码,确保 您的安全性是完美的?
编辑:从遗留数据库应用程序中删除密码时,您有一些真正的选择:
- 只需更新您的密码并继续循环。重新发布所有内容:(
- 重构代码,并从桌面代码的视图部分中删除数据库操作。将其放入网络服务中。无论如何不要在 views/forms 中写 SQL!
- 使用网络服务 return 您的连接字符串,哈哈。不太好 - 有效但不推荐,除非您觉得此解决方案没有足够的底片。 (Authen/Authorization/Hackers/its janky/etc)
- 使用 app.config 并接受纯文本密码。可选择对其进行加密。盐+哈希会很棒!如果这不是一项艰巨的任务,这就是 IMO 的理想解决方案。 <--
只要从桌面应用程序建立连接需要密码,它就不安全。即使您以加密格式存储它或在运行时检索它,坚定的黑客也可以找到从内存中检索密码的方法。
执行此操作的正确方法是将与数据库相关的操作移动到安全服务器上的 Web 服务 运行。然后,Web 服务将作为受信任的应用程序访问数据库,例如运行 作为具有 trusted connection 的服务帐户。
如果工作量太大,and/or您不必太担心“坚定的黑客”,只是想阻止好奇的员工,在配置文件中 encrypt the password 可能就足够了.
我有 10 多个遗留 VB6/VB.NET 应用程序。他们建立与数据库的连接(ODBC/Thick 客户端)。连接字符串都是源代码中的纯文本字符串。我当前的任务是删除所有出现的数据库密码;我正在尝试确定最佳方法。
到目前为止我已经 gathered/decided:
仅使用 app.config 是不够的。生产数据库密码将位于用户机器上的 appname.manifest.config 中……以纯文本形式!无法满足我的需求。
Encryption/Decryption(app.config 与 ConfigurationManager .NET class)主要 load/close 事件是一个选项。这是一个好吗? Tim Corey 说不要这样做..呃.
我的 Web 服务使用的 IIS 站点上有所有可用的数据库密码。它们正确存储在连接字符串 (web.config) 中。我能够从 Web 服务中检索它们。为什么我不应该使用 Web 服务来 return 正确的连接字符串?出于安全原因 - 授权和身份验证..仅此而已吗?
使用 Web 服务调用 return 数据库密码,确保 您的安全性是完美的?
编辑:从遗留数据库应用程序中删除密码时,您有一些真正的选择:
- 只需更新您的密码并继续循环。重新发布所有内容:(
- 重构代码,并从桌面代码的视图部分中删除数据库操作。将其放入网络服务中。无论如何不要在 views/forms 中写 SQL!
- 使用网络服务 return 您的连接字符串,哈哈。不太好 - 有效但不推荐,除非您觉得此解决方案没有足够的底片。 (Authen/Authorization/Hackers/its janky/etc)
- 使用 app.config 并接受纯文本密码。可选择对其进行加密。盐+哈希会很棒!如果这不是一项艰巨的任务,这就是 IMO 的理想解决方案。 <--
只要从桌面应用程序建立连接需要密码,它就不安全。即使您以加密格式存储它或在运行时检索它,坚定的黑客也可以找到从内存中检索密码的方法。
执行此操作的正确方法是将与数据库相关的操作移动到安全服务器上的 Web 服务 运行。然后,Web 服务将作为受信任的应用程序访问数据库,例如运行 作为具有 trusted connection 的服务帐户。
如果工作量太大,and/or您不必太担心“坚定的黑客”,只是想阻止好奇的员工,在配置文件中 encrypt the password 可能就足够了.