2011-12-21 98 views
2

我已經在java中開發了一個桌面應用程序,其中我擁有了用戶的憑據。我開發了這個應用程序,使它可以在任何平臺上運行。現在困惑的是,我正在獲取的是存儲此憑據信息的位置。文件是否適合它?或者我應該根據所使用的平臺來存儲它?就像在Windows中,我可以使用註冊表來存儲這些信息。但是,Linux和其他平臺呢?有什麼標準的解決方案可以幫助我或使用文件是唯一的方法嗎?我最初以爲將它存儲在屬性文件中,但任何有知識的人都可以瀏覽jar的內容,並可以擁有該屬性文件,所以我認爲這也不是合適的解決方案。請告訴我一個更好的方法來存儲這個憑據。憑證已加密。哪裏存儲機密信息?

回答

3

如果憑據已加密,您可以將它們存儲在一個文件中,最好存儲在用戶的主目錄中。您也可以加密文件本身以防止其他人直接閱讀。

使用這個,你有3個級別的安全性:

  1. 只有用戶訪問主目錄(用戶自己,任何管理員)可以訪問文件。你也可以有多個文件 - 每個用戶一個。
  2. 該文件是加密的,所以只有那些有權訪問解密密鑰和知道加密方法的人才能解密該文件。
  3. 證書通常使用異步算法進行加密。因此,純文本無法用任何合理的努力來重構。
+1

謝謝。我認爲將文件存儲在主目錄是我將遵循的。 – ankurtr 2011-12-21 13:29:34

1

由於您的應用程序針對多個平臺,因此即使您提供了在其他平臺中實現相同功能的方法,我也不認爲您應該實現特定於平臺的選項。例如,總是可以瀏覽Windows註冊表。

如果使用目前認爲安全的算法對證書進行加密,我認爲您不需要擔心很多事情。 在你認爲更合適的地方模糊了證書,加密應該完成剩下的工作,這就是它存在的原因。

只是不要忘記保護用於加密證書的密鑰。

+0

保持用戶可以訪問加密數據是一種好的做法嗎? – ankurtr 2011-12-21 13:23:40

+0

用戶在自己的計算機中無法訪問什麼?無論如何,證書都是用戶的。我想你正試圖提供一種方式,讓第三方訪問私人計算機的人不能訪問憑證,對吧? – 2011-12-21 13:27:14

+0

是的。究竟。第三個人不應該能夠訪問憑據。 – ankurtr 2011-12-21 13:29:08

4

在這種情況下,加密密碼是最好的選擇。所以,你可以將它保存在一個文件中。永遠不要將密碼存儲爲文件,數據庫或其他地方。我認爲這是相當廣泛和有用的文章在這個主題:http://www.codeproject.com/KB/recipes/StoringPasswords.aspx

+0

不錯的文章...有更多關於我的問題的知識... – ankurtr 2011-12-21 16:58:04