2009-05-18 102 views
0

我在寫一套應用程序,都需要登錄到服務器。它很好地融合在一起,但我碰到了一個後勤障礙。應用程序的性質要求它們關閉並稍後以一定頻率再次啓動。每次需要啓動某個應用程序時都必須登錄,這非常煩人。登錄後勤

我試圖想到一種安全的方式,可能有登錄信息存儲在本地用戶的機器上。有沒有一種好方法可以解決這個問題?權限保護配置文件?註冊表? Firefox如何存儲密碼?你有沒有必要做這樣的事情?該套件比其他任何協議都更具有協議性,所有應用程序都以各種語言(Python,C#,Java等)編寫,並可在各種操作系統(Windows,Linux,OSX等)上運行。 。我沒有真正尋找代碼示例,但更多的只是解決這個問題的一般方法。擁有本地存儲的密碼是否明智?怎樣才能爲具有不同組件的套件進行會話登錄?現在我使用本地存儲到每個應用程序的application.rc配置文件,但它們是純文本的,並且非常安全。

+0

語言?操作系統..?你引用註冊表,所以也許窗口,但又是什麼語言? – 2009-05-18 17:02:24

回答

2

我正在與傑夫在這一個,並假設自從你提到的註冊表,你指的是Windows。我還會假設你正在討論桌面應用程序(否則你可以使用內置瀏覽器cookie來存儲用戶的會話)。

關閉我的頭頂,我會設計應用程序,以便當用戶登錄到服務器時,服務器返回一個唯一的會話ID,用於標識經過身份驗證的用戶。然後,我會存儲比ID與鹽漬/加密時間戳(它使您可以選擇過期緩存的憑據)。

存儲機制取決於你。您可以將它們存儲在Windows註冊表的HKEY_LOCAL_USERS部分或Windows中的Application Data文件夾中。兩者都爲您提供用戶分段存儲的選項。

1

通常,這種事情是通過使用「cookie」來完成的; (安全地)表示用戶已經成功地先前登錄到服務器資源的密鑰。這是大多數網站管理登錄信息的方式,Firefox(所有瀏覽器,實際上)都存儲瀏覽器在用戶登錄時設置的cookie。關於cookie的一些重要的事情:它們應該被加密,以確保惡意程序無法生成一個,從而繞過登錄過程,它們應該與服務器保存的資源相匹配(相同的原因),並且它們應該老化,以便在你可以在網站上保留一段時間的登錄信息,您的登錄信息不是永久性的(這是另一個安全漏洞)。

0

就我個人而言,我會使用加密的本地配置文件,將機器的某個ID值(主板ID,芯片ID,HD ID等)作爲加密密鑰的一部分,以便配置文件不能從一臺機器到另一臺。我還會包括日期和時間,以便在您決定陳舊時可以過期。

或者,您可以創建一個主機exe或啓動程序來執行登錄,然後在每次啓動新應用程序時進入休眠狀態並將其喚醒。主機exe會將該應用程序作爲參數並決定是否要求登錄憑據(通常是在第一個應用程序啓動時,然後將登錄用戶和加密密碼保存在內存中。當主機exe退出登錄信息時被遺忘,當你再次啓動時,循環開始。)