2009-11-05 32 views
3

我有一種情況,用戶在C#應用程序中訪問遠程MySQL服務器。如何在C#應用程序中安全地隱藏數據庫憑證?

基本上,

他/她的桌面上使用C#應用程序的用戶 - >>>>連接到遠程 - >>>>>>>> [REMOTE]

如何安全地隱藏數據庫連接細節?

我有一些想法,但我不認爲他們是安全的。

  1. 將數據庫連接數據加密到文件中並將其存儲在應用程序目錄中。
  2. 提示登錄頁面,讓人輸入用戶名/密碼,然後將數據庫連接數據傳輸到用戶計算機。
+0

您的威脅模型並未完全明確。您是否試圖從用戶或其他壞人那裏隱藏這些數據?如果是後者,那麼壞人是否可以訪問用戶的機器? – 2009-11-05 01:24:39

+0

@Keith Randall //實際上,這兩者都是因爲用戶有時成爲不好的用戶。 – Moon 2009-11-05 01:41:33

回答

5

無論您如何以明文形式將憑據歸檔到應用程序中,您都很容易受到攻擊。

要麼在數據庫前面實現一個服務層,要麼直接連接是必不可少的嘗試並提出一個允許每個用戶使用一個唯一數據庫賬戶的方案,然後在數據庫上適當地授權他們。

+0

服務層+1 – 2009-11-05 01:22:55

+0

服務層+1。 – Glenn 2009-11-05 01:25:04

3

通常,最好向用戶提供憑據,以便管理員可以啓用或禁用每個帳戶。除此之外,還有用於加密全部或部分配置文件的API。下面是一個示例文章:

http://www.codeproject.com/KB/dotnet/EncryptingTheAppConfig.aspx

+0

是的,詢問用戶。 – 2009-11-05 01:25:41

+0

+1使用帶有加密連接字符串的system.configuration.configurationmanager。或獨特的憑據。 – 2009-11-05 03:14:53

0

我建議根據用戶憑證某種形式的會話管理。這可以通過許多方式來完成。

例如,您可以通過簡單地使用後端系統包裝數據庫訪問來實現此目的。您的桌面客戶端無視數據庫,僅與後端系統交互。不幸的是,如果你必須從頭開始實現這種間接性,這並不是微不足道的,但它肯定會使你的應用程序更加健壯和靈活。 WCF服務可以幫助實現這一點。

+0

我錯過了sipwiz的答案。這和這個差不多。 – Newbie 2009-11-05 02:10:20

相關問題