2013-02-18 196 views
1

我正在構建一個基本的Web應用程序,它接受用戶輸入並返回一個加密的密碼。如何安全地存儲密鑰?

問題是,目前我使用的SecretKey存儲在Java類的src中。對我來說,這似乎是一種冒險的做法,所以我試圖找到一種方法來安全地存儲我的SecretKey。

做了一些研究,我找到了Java KeyStore類,但我不完全確定這是否是我需要的。另外,如果這是我所需要的,那麼你們可以指導我如何實施它,更重要的是,它是如何工作的?

感謝

編輯:從做了很多思考/讀取好像是不是真的有一個很好的解決方案,真正是不需要的,只要你的主服務器是安全的解決方案,該煤礦將是的,所以這不是問題。

謝謝你所有的答覆! :)

+0

構成服務器硬盤中祕密密鑰存儲的所有解決方案之間幾乎沒有區別。如果密鑰在磁盤上,則始終有一段時間以未加密的形式複製到服務器的內存中。 – gd1 2013-02-18 17:31:38

+1

你爲什麼要在Web應用程序中返回密碼?你應該永遠不要這樣做。 – Perception 2013-02-18 17:33:01

+0

@ gd1那麼KeyStore的目的是什麼? – user2019260 2013-02-18 17:44:11

回答

1

密碼應使用單向散列函數進行存儲,這樣可以避免此問題。請參閱https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

+0

實際上,OP可以肯定地改進他/她的應用程序的總體設計,但是這個回答並不涉及他/她所要求的內容,而應該作爲評論發佈。 – gd1 2013-02-18 18:04:12

0

如果您正在談論您的加密密鑰,那麼沒有安全的方式來將該密鑰安全地存儲在JavaScript中。我猜你正在談論它的瀏覽器本地存儲的存儲,這不過是瀏覽器端的一個持久cookie。 使用Chrome WebInspector或Firefox Firebug的每個人都可以輕鬆地閱讀他所訪問的任何頁面的該商店。此外,您必須通過JavaScript將其保存在此商店中,並且每個人都可以在瀏覽器中閱讀您的源代碼,這更加明顯。

安全地做這種事情的唯一可能性是服務器端,就像使用PHP一樣。如果你想要交互行爲的感覺,你可以在客戶端使用AJAX與後端進行交互。

編輯: 嗯,我想你錯了,因爲你在談論Java在後端?如果是的話,我認爲當你在編譯源代碼中硬編碼時沒有問題?如果你想把它存儲在別的地方,並害怕有人使用它,你可以在你的應用程序中使用它並將其散列在你的應用程序中,然後用它來生成密鑰(當然鹽是硬編碼的)。

+0

我正在使用JSF,所以關鍵是在我的來源...我不認爲瀏覽器看到它。但我是新手,所以我不確定。 – user2019260 2013-02-18 17:40:23