2015-08-27 101 views
3

我通過HTTP(S)傳輸密碼爲HttpServlet作爲參數。要獲取密碼,我使用Servlets getParameter(String)方法,該方法返回一個String。但是應該像提到的here那樣使用char[]來處理密碼。安全地處理servlet中的密碼

那麼,我想知道的是:我怎樣才能安全地處理的Java Servlet中的密碼?我的解決方案是getParameter(String)唯一一個還是有更好的選擇?

請記住,我並不關心如何安全地傳輸密碼(我期望傳輸是安全的 - 也許使用SSL或其他)。

感謝提前:)

編輯: 我忘了提,我不使用密碼自己(對某些類型的訪問限制我的應用程序)。我只是轉發密碼(所以你可以說我的WebApp就像是一個遙控器)。

+2

非常好的問題,但答案是你根本不應該處理密碼。你應該使用容器管理認證(CMA)。您應該自己處理密碼的唯一場合是更改配置文件或更改密碼請求。 – EJP

+0

@EJP哦,你是完全正確的,我只是忘了從我的問題域提到的東西。我自己並沒有使用密碼(用於訪問我的webapp)我只是將它像「遠程控制」一樣轉發到windows cmd,這需要密碼。我會編輯它。 – Jan

+0

好吧,你被'HttpServletRequest.getParameter()'返回一個字符串。但它只是在請求的生命期間被引用,除非你自己藏了一個引用,你不應該這樣做。 – EJP

回答

0

如果您的登錄參數是在POST請求中發送的,並且包含在請求內容中,您可以自己分析內容並將密碼存入char數組。

你需要這樣做之前任何呼叫request.getParameter(String)是因爲這將使容器讀取和解析內容。這隻適用於servlet容器懶惰地初始化其參數映射的情況。

0

「傳送師」 的方法:

的JavaScript破解密碼進入各自1個字符的參數。直接重新組裝到服務器端的char數組中。