2011-04-18 155 views
0

我正在編寫一個程序在vb.net中需要用戶登錄才能使用該應用程序。主要用戶在安裝程序時創建,類似於安裝Windows時的工作方式。用戶名和密碼存儲位置

主要用戶可以將其他用戶添加到程序中。我已經知道我應該存儲加密的密碼。我的問題是,我應該在哪裏存儲用戶名和密碼?註冊表,獨立存儲或.config文件。我不希望任何用戶能夠修改/刪除該文件,因爲其他用戶顯然無法登錄。此外,該文件應該可供登錄到計算機的任何用戶訪問。

電腦不能保證連接到互聯網,所以它必須存儲在本地。

感謝

+2

另一種選擇是基於他們的* Windows *登錄憑證驗證用戶。這樣,您可以讓Windows爲您處理存儲用戶名和密碼。 – 2011-04-18 14:51:40

+0

應用程序是否利用任何類型的存儲後端,如數據庫?此外,這個應用程序本身以任何方式聯網?換句話說 - 如果應用程序安裝在兩臺機器上,您是否期望用戶/密碼被同步? – RQDQ 2011-04-18 14:53:09

+0

我曾考慮過這個問題,但對於我的程序使用環境來說,這不是一個可行的解決方案。 – Johan 2011-04-18 14:54:02

回答

0

如果您無法以任何方式在計算機上使用Windows用戶/憑據,那麼確實沒有絕對的方法來防止文件被刪除/更改,因爲計算機上的任何人都可以訪問主要用戶需要修改文件的權利,以便他通過程序添加用戶。

唯一確實的方法是讓主用戶使用不同的用戶名登錄,並在該文件/文件夾上設置文件權限,以確保只有主用戶具有修改該文件的權限(另一個用戶帳戶無權修改權限)。我知道你說過它不適用於你的環境(這是?),但是你也許能夠通過你的代碼在不同的憑據下創建用戶和運行的東西,而不需要用戶登錄任何不同的東西。

我能想到的唯一一種瘋狂的方式是在計算機上創建一個服務,一旦它開始運行,它就會打開並保存該文件的句柄,以便其他進程無法打開該文件進行寫入。您當然必須爲主用戶添加一些方法來添加用戶。

+0

感謝您的輸入。我已決定在安裝過程中創建該文件。如果程序加載時不在那裏,程序將進入鎖定狀態。解決這個問題的唯一方法就是卸載程序並重新安裝。 – Johan 2011-04-19 16:21:18

2

要告訴你實話,如果有人有意志力去尋找他們會發現這個文件,所以存儲可以幫助了安全性,但我將專注於文件本身的內容。

您可以嘗試將應用程序的數據存儲爲可以阻止業餘嘗試的加密文件,但是當您使用.net框架時,您的程序可能會被反編譯,任何對稱加密算法都可能無法使用。

我認爲你最好的選擇是根據計算機上的程序生成種子,如果解密失敗,請回家或進入鎖定狀態。

另一種選擇是存儲加密(使用對稱密鑰加密)文件和散列文件(可能位於不同位置)。如果加載的文件的散列值與散列文件不匹配,那麼程序可能會將它打回家(如果您有家庭打電話)。

這只是一個想法,實際上並沒有嘗試過這樣的事情。

+0

這聽起來很不錯。起初,如果找不到文件,我會進入鎖定狀態。我的首要任務是用戶不會意外刪除文件。孤立的存儲是最好的/最簡單的解決方案嗎?任何登錄到計算機的用戶都可以訪問該文件嗎? – Johan 2011-04-18 15:04:30

+1

我沒有使用過獨立存儲,但從我收集的東西 - http://msdn.microsoft.com/en-us/library/3ak841sy(v=vs.80).aspx - 是路徑包括一個其中可能意味着它是每個用戶。有人請糾正我,如果我錯了,因爲我從未使用過隔離存儲。 – 2011-04-18 15:10:38

+0

是的,我現在讀了一些關於隔離存儲的內容,似乎並不是最好的選擇。我想我會把它保存在註冊表中 – Johan 2011-04-18 17:02:25

相關問題