2014-01-24 42 views
4

當開發Windows應用程序:連接字符串中用戶名和密碼的安全性如何?

  1. 我的連接字符串中如何保護用戶名和密碼?

  2. 像銀行這樣的組織,他們會嚮應用程序開發人員提供他們數據庫的用戶名和密碼嗎?如果不是典型的應用程序開發人員如何編寫DB連接?

  3. 保護連接字符串中用戶和密碼的行業標準是什麼?

感謝

回答

3
  1. 我的連接字符串中如何保護用戶名和密碼?

使用Windows身份驗證,以消除在連接字符串中密碼的需要,或者使用一個或多個的組合:

請注意,上述技術適用於服務器應用程序(例如ASP.NET),其中對服務器的訪問權限可以限制爲授權管理員。對於直接訪問數據庫的客戶端應用程序來說效果不佳。

還要注意,加密本身還不夠:它僅僅是通過控制對加密密鑰的訪問問題來代替控制對純文本配置文件的訪問的問題。使用受保護的配置時,您需要決定如何限制對用於加密配置文件的加密密鑰的訪問。

2. 像銀行這樣的組織,他們會把應用程序開發人員的用戶名和密碼發給他們嗎?如果不是典型的應用程序開發人員如何編寫DB連接?

一般情況下,開發人員只能獲得在開發/測試環境中訪問數據庫的憑據。訪問生產數據庫將受到限制。

3. 保護連接字符串中用戶和密碼的行業標準是什麼?

沒有「行業標準」,但見回答問題1

+1

我相信你的意思是一組與原始平行的虛擬數據? –

+0

@sniff_bits - 開發/測試數據庫中的數據取決於組織。如果生產數據是保密的,它可能是虛擬數據,或者可能是生產數據的匿名版本。如果它不是機密的,它可能只是生產數據的快照。 – Joe

+0

@Joe:我想將我的應用程序部署到**最終用戶**。如何使用連接到集中式SQL服務器來保護用戶名/密碼?正如你所寫的那樣:「對於直接訪問數據庫的客戶端應用程序來說效果不佳。」 – YukiSakura

0

從MSDN:

ASP.NET 2.0中引入了新的功能,稱爲保護配置,使您能夠加密的配置文件中的敏感信息。儘管主要是爲ASP.NET設計的,但受保護的配置也可用於加密Windows應用程序中的配置文件部分。有關受保護配置功能的詳細說明,請參閱Encrypting Configuration Information Using Protected Configuration

以下配置文件片段在加密後顯示connectionStrings節。 configProtectionProvider指定用於加密和解密連接字符串的受保護配置提供程序。 EncryptedData部分包含密文。

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"> 
    <EncryptedData> 
    <CipherData> 
     <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue> 
    </CipherData> 
    </EncryptedData> 
</connectionStrings> 

當加密的連接字符串是在運行時檢索,.NET框架使用指定的供應商來解密的CipherValue,並將其提供給您的應用程序。您不需要編寫任何其他代碼來管理解密過程。 閱讀MSDN下面的文章請以獲取更多信息:

Connection Strings and Configuration Files

+3

鏈接只有答案在SO在這裏皺起了眉頭。嘗試添加一些細節 – paqogomez

+0

複製/粘貼文章是一個更好的主意呢?不要這麼想...... – Erwin

+3

不,但我想你可以建立一個總結文章的答案,然後加入鏈接。這會增加價值。鏈接不增加價值。 – paqogomez

0

您應該使用的參數。 SqlCommand command = new SqlCommand(「select * from Login where Username = @name」,conn);}} command.Parameters.Add(new SqlParameter(「@ name」,uname.txt)); 。

+0

這不關於保護連接字符串數據 –

+0

我認爲OP正在尋找如何加密用戶和傳遞*連接*到數據庫,而不是選擇一個用戶並從數據庫傳遞*。 – paqogomez

+0

好的。我在你提到的有關測試環境的第二個答案中我的錯誤 – user3229034

1

您可以在app.config中使用與web.config相同的方式encrypt sections。 MS稱其爲保護配置。 像這樣

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"> 
    <EncryptedData> 
    <CipherData> 
     <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue> 
    </CipherData> 
    </EncryptedData> 
</connectionStrings> 
相關問題