2010-03-04 60 views

回答

3

最安全的方式(假設Windows客戶端和受支持的數據庫服務器)是使用integrated authentication,並避免在所有連接字符串分配密碼。

 
Data Source=servername;Initial Catalog=dbname;Integrated Security=SSPI; 

每個用戶都需要訪問數據庫服務器。我發現最簡單的方法是使用活動目錄組 - 爲數據庫服務器提供適當的訪問權限,並根據需要添加和刪除該組中的用戶。

3

對其進行手動加密或使用隨EntLib一起分發的配置工具進行加密。

this should get you started.

編輯:當然,正如其他人所說,使用集成的安全是你最好的選擇,但我明白,有時候,這是不是一種選擇。

在這些情況下,您需要做一些額外的工作。我以前做過,並且知道它的工作原理。我將鏈接到一篇描述挑戰的文章,並最終提供用於在Windows應用程序中執行此操作的工作解決方案。

警告:在點擊此鏈接前請戴上太陽鏡。

http://guy.dotnet-expertise.com/PermaLink,guid,b3850894-3a8e-4b0a-aa52-5fa1d1216377.aspx

+0

我對我的web應用程序使用這種方法,但是如何加密連接字符串與部署的Windows應用程序一起工作。用於加密連接字符串的密鑰文件將需要與應用程序一起部署以解密連接字符串。這意味着任何人都可以解密它? – 2010-03-04 05:27:00

+0

@布魯斯 - 通過部署,你的意思是在野外? – 2010-03-04 05:44:57

+0

是的。用Sqlce數據庫說一個應用程序。 – 2010-03-04 05:59:45

0

這真的取決於你如何期望別人來獲得在連接字符串。如果您擔心應用程序的用戶(不是開發人員),只需加密連接字符串並將加密的字符串置於應用程序中的常量中。在運行時使用該密鑰來解密用於該常量的加密字符串,然後在部署該代碼之前對其進行混淆。這是否可靠?當然不是,但它可能會阻止99.9%的人獲得連接字符串。他們必須反彙編你的代碼,並首先獲得加密的字符串,然後他們必須有權訪問密鑰。如果您擔心開發人員,那麼只要他們無法訪問生產中的源代碼以及可能用於加密連接字符串的密鑰,上述解決方案就可以正常工作。當然有人必須輸入連接信息,但只能讓該人訪問它。希望這可以幫助。