2014-05-21 30 views
2

我工作的一個web開發公司,並已投入負責,以確保應用程序或當應用程序未連接到互聯網,這意味着超過HTTPS不適用標準登錄協議的任何其他內容。離線安全HTML 5應用

我的公司工作描述自己在申請'在路上'壞互聯網連接。出於每個人都能理解的原因,用戶必須能夠「鎖定」應用程序並能夠解鎖。最好用他們在線時登錄的密碼(他們得到一個安全的cookie,在與網絡服務器聯機時對其進行身份驗證)。

現在我需要有人方式而不讓黑客很容易尋找到一個websql/indexdb/local存儲和剛剛找到它來檢查密碼。將其存儲爲簡單的哈希值太容易被黑客入侵。

我想到存放醃製,但它被黑客攻擊之前,還以爲密碼(如最後4個字符)的散列部分和鹽這將只是一個時間問題。如果它確實得到彩虹,他們只能解鎖應用程序,並沒有密碼。

我真的不能似乎找到確保離線HTML5應用的良好和/或標準化的方式。但有沒有像最佳做法?

另一個問題是數據的離線存儲本身的安全性,因此只有應用程序可以讀取它。我可以想出使數據「無法讀取」的方法,但是我可以用所有方法來安全地存儲記錄,我也可以想出一種方法來破解它。所以在這個領域的任何建議也是受歡迎的。

+1

以加密形式存儲數據,根本不存儲密碼 - 這似乎是解決您的兩個問題。 –

+0

即使應用程序無法訪問Internet,我也需要一些方法來驗證用戶何時打開應用程序,那麼如何檢查密碼是否正確?另外我需要解密數據以便在應用程序中使用。所以解密它的關鍵是已知的JavaScript。 – ovanwijk

+2

詢問密碼,從密碼派生密鑰(搜索PBKDF2作爲起點),嘗試解密本地存儲的數據。如果解密失敗,則密碼不正確。 –

回答

1

像​​建議:我想只有存儲(鹹)哈希值是不夠公平的。對於用戶解鎖屏幕,他/她在密碼中清除類型,它將被散列並且必須匹配存儲散列。這可以用來加密數據。幸運的是斯坦福提出了一個非常好的JavaScript加密庫:http://crypto.stanford.edu/sjcl

很遺憾,在瀏覽器中沒有安全的地方可以訪問網站,但沒有其他人訪問。想想看:如果有一個地方可以打開調試工具並注入一些代碼來訪問它。由於JS安全只是一個研究問題,沒有標準的解決方案來解決這個問題......