2013-05-26 175 views
0

我的應用程序在其GUI上顯示IP地址和密碼。密碼會定期更改(對於每個連接到它的新用戶),並且只能由連接的人員使用一次,以確保它們連接到正確的設備。例如,兩個彼此相鄰的朋友想要使用我的應用程序,一個查看服務器的密碼,以確保它們不會意外地使用附近的應用程序連接到另一個人。我應該擔心密碼安全嗎?

用戶還可以與其他設備「配對」,在這種情況下,系統會要求他們輸入一次密碼,服務器用戶會被要求確認配對過程,然後再次不需要密碼。我通過在數據庫中保留一個新的隨機生成的密碼和另一個用戶的MAC地址來做到這一點。

目前我使用String s存儲和比較我的應用程序中的任何地方的密碼。我讀過使用char數組來存儲密碼對於安全性更好,因爲您不必擔心內部池將密碼保存在內存中。

對於我的用例,我真的需要擔心這種安全嗎?我沒有處理任何用戶敏感信息,我只是喜歡有一個安全網。

旁邊的問題,如何在Swing GUI上顯示保存在char數組中的密碼,而無需將其轉換爲String

+0

要回答側面的問題:你不要。您可以顯示多個子彈,星號或其他點來表示密碼,或者根本不顯示任何內容。你不應該顯示任何安全敏感的東西的實際內容。 – AJMansfield

回答

1

恕我直言,使用字符數組只會給你一種更好的安全感。如果有人可以物理訪問您的計算機及其內存,則使用String或char數組不會產生巨大影響。

回答你問的問題。問題不是interned字符串池,因爲你不會實習你的隨機生成的字符串。問題在於STrings是不可變的,因此一直保存在內存中,直到垃圾回收沒有任何(理智的)重新設置其內容的方式。 char數組的所有元素在不再需要時可以重置爲0。

關於如何顯示密碼而不將其轉換爲字符串,您可以直接在JComponent上直接繪製每個字符。但是,如果你準備好在屏幕上顯示密碼,那麼考慮將密碼保留在內存中,這對我來說是非常矛盾的。

+0

「但是如果你準備好在屏幕上顯示密碼,那麼考慮將密碼保留在內存中的某個地方對我來說是非常矛盾的。」這正是我的想法。 – Logan

1

安全的主要目的是避免權限升級。基本上每個進程都有一組允許他們執行的事情,您需要確保有權訪問某個資源的人不能使用它來訪問另一個資源。

在你的情況下,主要問題是「程序通過訪問密碼獲得什麼?」。如果主應用程序已經顯示了所有相關信息,那麼通過嗅出密碼,流氓程序(可訪問您的內存空間)是否有任何收穫?

如果您正在使用在線流程,答案可能是肯定的。掌握某人的意思Dropbox密碼具有價值,即使我已經擁有對本地計算機的廣泛訪問權限。然而,如果你正在談論一個本地應用程序,他們可能沒有什麼可以通過嗅探密碼獲得。

相關問題