2008-11-04 125 views

回答

2

DP API是在Windows上本地存儲敏感數據的標準方式。你沒有提到你正在使用的編程語言,但在.NET中,這是從System.Security.ProtectedData類中暴露出來的。

-2

存儲用戶名的最佳方法是使用純文本。存儲密碼的最佳方式不是根本不存儲它,而只是存儲它的哈希值。當你收到一個登錄嘗試,你散列密碼並比較兩個散列。

雖然這是一個有點天真,因爲它容易受哈希表(維基百科彩虹表)。無論如何,這很容易避免,爲每個用戶儲存不同的鹽。 salt只是一個隨機數字或字符串,可以在散列之前連接到密碼。

所以當試圖登錄將是業務:

  1. 搜索數據庫中的哈希,並與給定登錄鹽。
  2. 將給定密碼與先前的鹽級聯。
  3. 哈希連接的結果。
  4. 將計算出的散列與數據庫1進行比較。如果他們匹配,授予訪問權限!
+0

不幸的是,這個答案與問題無關。這不是一般的密碼散列問題。他正在專門討論從服務訪問sql server的問題。 – 2008-11-05 00:02:58

+0

好吧,我的壞,應該仔細閱讀 – AticusFinch 2009-12-28 14:17:46

+0

除了存儲哈希不提供和大量的安全增益,因爲它是用於身份驗證的哈希,因此獲得對哈希的訪問是一樣好的以獲得明文訪問密碼。 – 2010-08-19 08:01:39

0

儘管我同意,理想情況下,您不需要存儲此密碼,但如果您這樣做,則無需自行哈希。 CryptProtectData。閱讀本文底部的警告。儘管如此,我實際上使用LsaStorePrivateData來存儲密碼。

5

假設.Net,你可以加密你的配置文件。見this

0

沒有真正安全的方法來存儲您的Windows服務的用戶名和密碼,因此您使用的用於訪問SQL Server的帳戶必須具備必要的最低數據庫權限,這一點非常重要,做。

編輯:我不是說你不應該仍然加密的用戶名和密碼 - 你應該使用其他答案中提到的工具之一。

0

這取決於你的環境。

此服務是否在不安全的機器上運行?

我們的服務在我們的服務器機房內的服務器上運行,只有管理員才能訪問。

我們將像這樣的信息部署到配置文件中,因爲我們使用NT身份驗證來直接限制對這些文件的訪問。但是,運行服務的機器只是一臺服務器,而不是一臺用戶機器。

相關問題