2010-01-28 39 views
3

我正在使用數據庫(mysql)的桌面應用程序(讓我們稱之爲應用程序)。 更多應用的用戶共享一個數據庫用戶。 示例:John和Mike應用程序用戶以「dbuser」等方式連接到數據庫如何在桌面應用程序中有效保存數據庫密碼?

問題是:如何有效地爲DB用戶保存密碼?(應用程序用戶的密碼存儲在數據庫中)。

可能的解決方案我發現: 1.在代碼中 - 這實際上很愚蠢:D 2.在文本INI文件 - 易於閱讀! 3.在extern文件中加密 - 很好,但需要訪問應用程序。

回答

1

(應用程序用戶的密碼存儲在數據庫中)。

使用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

1

您可以將它以加密格式存儲在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

相關問題