如何在桌面应用程序中有效保存数据库密码?

问题描述:

我正在使用数据库(mysql)的桌面应用程序(让我们称之为应用程序)。 更多应用的用户共享一个数据库用户。 示例:John和Mike应用程序用户以“dbuser”等方式连接到数据库如何在桌面应用程序中有效保存数据库密码?

问题是:如何有效地为DB用户保存密码?(应用程序用户的密码存储在数据库中)。

可能的解决方案我发现: 1.在代码中 - 这实际上很愚蠢:D 2.在文本INI文件 - 易于阅读! 3.在extern文件中加密 - 很好,但需要访问应用程序。

(应用程序用户的密码存储在数据库中)。

使用SHA1/SHA2算法加密存储的密码。这是最常用的技术。 我不是.NET开发人员,但我很确定他们提供的功能。

当用户登录时,再次加密给定的密码并将其与存储的密码进行比较。如果它们相同,请让用户登录。

+0

你如何编辑呢? – Michal 2010-01-28 15:02:04

+0

你只需覆盖它们。例如查看任何动态网站:如果您想更改密码,则必须提供旧密码,然后编写新密码。系统对给定的旧密码进行加密,检查是否与实际存储的密码相同,然后加密新密码并覆盖存储的密码。 – dgraziotin 2010-01-28 15:08:13

+0

我明白了。好吧,我给你举例。 我决定更改我的APP使用的数据库服务器的位置(IP)。我应该通过应用程序GUI来做到这一点,或者只是从应用程序加载数据中手动编辑一些外部文件? – Michal 2010-01-28 15:19:25

您可以将它以加密格式存储在INI文件中。这是恕我直言的最佳方式。我以加密格式将连接字符串存储在.NET应用程序的App.config中。

编辑:

要编辑连接字符串,我使用另一个配置值App.Config中的文件的AppSettings CSEncryption = “Y | N | R”

如果是Y,连接字符串被加密,解密并使用它。

如果是N,连接字符串未加密,直接使用。

如果是R,连接字符串未加密,则对其进行加密并更新连接字符串,并在App.Config中将CSEncryption设置为'Y'。

+0

以及您如何编辑加密文件?当等移植到另一个数据库主机名? – Michal 2010-01-28 14:57:14

+1

最重要的是,您应该始终使用安全通道(SSL)与服务器进行通信,否则任何人都可以嗅探某些数据包并找出密码 – rsilva4 2010-01-28 15:01:25

+0

+1至rsilva。如果数据库可通过网络访问,则使用SSL与其进行通信是一个不错的主意 – dgraziotin 2010-01-28 15:11:50