2012-10-12 167 views
7

我需要訪問一個api,該API需要使用jquery mobile api以每個用戶爲基礎進行http認證。在jquery移動應用程序中本地安全地存儲用戶密碼

我打算將該應用程序作爲網站使用,並將其包裝在科爾多瓦的各種設備中。

如果我有一個登錄表單,它捕獲用戶名和密碼並將其存儲爲一個javascript變量,有沒有什麼方法可以暴露這些數據?

如果是這樣,處理存儲用戶認證細節的最佳選擇是什麼?如果我不需要,我無意建立中間服務器。

很多謝謝。 :D

+0

它使用HTTP基本身份驗證,還是作爲參數傳遞給每個API調用的用戶名/密碼? – SilverlightFox

+0

實際上,兩者。每次調用服務器時的http basic auth - 不返回auth令牌。 – significance

+0

用戶使用基本身份驗證進行身份驗證後,瀏覽器不會自動將此數據發送到每個請求的資源嗎?我知道這是如何適用於其他瀏覽器請求,但我不太確定JavaScript。 – SilverlightFox

回答

3

我建議不要在localStorage中存儲用戶名或密碼,而是存儲訪問令牌。訪問令牌可以經常更新和更改,也不會透露用戶是誰或密碼是什麼。

除了iOS版鑰匙扣或者如果你編碼它爲增加安全性,你可以在非iPhone設備:

確保您不將設備ID存儲在localStorage中。

爲了增加安全性,您還可以將用戶的IP地址存儲在數據庫中並檢查(服務器端)IP地址是否匹配,但這可能太多了,因爲用戶每次連接到互聯網時都必須登錄一個新的位置或者他們的IP地址是否改變。

將IP地址存儲在服務器數據庫中,然後檢查它是否匹配(服務器端)可能是最安全的,因爲如果有人獲得了localStorage數據,則無關緊要。

2

所以我明白你不控制你登錄到的後端?如果你這樣做,我會更傾向於發送一次用戶名/密碼,然後存儲一些訪問令牌,以便以後訪問。

如果你不控制後端,你會堅持存儲用戶名/密碼。我想說,在localStorage中設置它們是安全的,但它確實不是很安全。再次,如果您的登錄不會發生在HTTPS上,我會更擔心密碼泄露的問題,而不是來自設備本身)。你可以使密碼更難找到,不要調用變量「用戶名/密碼」,在JavaScript中加密它們,混淆你的代碼。但最終,通過正確訪問設備,無需太多努力就可以檢索到它們。

包裝爲原生應用程序後,您有更多選擇,例如, iOS鑰匙串:http://shazronatadobe.wordpress.com/2010/11/06/ios-keychain-plugin-for-phonegap/

相關問題