我有一個iPhone應用程序,必須脫機工作,並且需要能夠被用於多個用戶使用相同的設備。最佳方式必須存儲在sqlite的iPhone應用程序
我現在存儲在sqlite數據庫裏面的pass。它必須在那裏...因爲數據庫與另一個在正常的sql服務器框中同步。
所以,我讀了從主數據庫的用戶名員工密碼&和發回信息到iPhone BD。當用戶登錄到應用程序時,從本地bd讀取。用戶離線工作,然後最終再次與master bd同步。
我有一個iPhone應用程序,必須脫機工作,並且需要能夠被用於多個用戶使用相同的設備。最佳方式必須存儲在sqlite的iPhone應用程序
我現在存儲在sqlite數據庫裏面的pass。它必須在那裏...因爲數據庫與另一個在正常的sql服務器框中同步。
所以,我讀了從主數據庫的用戶名員工密碼&和發回信息到iPhone BD。當用戶登錄到應用程序時,從本地bd讀取。用戶離線工作,然後最終再次與master bd同步。
我不完全相信你的問題是什麼...
如果是「我怎樣才能保持竊取存儲在設備上的數據的人」,那麼答案是不能。如果它被存儲在設備上,那麼任何有直接物理訪問權限的人都可以提取任何存儲的祕密。
特別地,如果代碼是在該設備上,則黑客可以拉斷它的任何加密密鑰或其他嵌入資源(包括數據庫)。
所以,如果你想防止只知道,你不能。如果材料足夠敏感,那麼我會完全放棄「斷開」模式。
如果它不是敏感的,你只是想保持從閒逛然後就做什麼,我們通常做的人:對數據庫進行加密並存儲在您的應用程序的關鍵。
去一個遠一點,如果你想防止被盜的手機不受損害那麼你唯一的選擇是有remote wipe enabled。但是,即使這樣也只能挽救你,如果丟失的手機被迅速報告,偷走它的人不知道如何抽出SIM卡來阻止它。
在這一天結束,黑莓仍然打擊蘋果遠在安全性。
UPDATE:我的意見將是太長。
@mamcx:我不認爲你很瞭解你的問題的範圍。 任何設備上的數據可能會受到影響,including passwords stored in the keychain。 iPhone真的不那麼難。
比方說,你與鹽散列密碼,並將其存儲在本地sqllite分貝。現在,當他們的用戶名和密碼,你的代碼斷開連接的用戶類型將哈希他們鍵入了加鹽並將其與在當地的分貝值。
所有必要做到這一點的信息被存儲在設備上,由於它的斷開性質。這包括散列算法和鹽。
現在,讓我們說的設備被盜或內部員工決定戴黑帽子。提取所有數據很簡單。這可以以非破壞性的方式完成,並且該設備可以被放回,沒有任何人知道它缺少。此時黑客只要想創建彩虹表來破解密碼。哎呀,有些公司會在各種雲層上租用時間到build the rainbow tables for you。
當然,密碼本身並不是必需的,除非黑客想要轉售它們,因爲所有的數據都已經丟失。
所以,問題是:數據有多重要?如果你不能失去它,不要讓應用程序運行斷開連接。如果不是那麼重要,那麼千萬要在本地做。只要讓用戶知道他們不應該使用他們在別處使用的用戶名/密碼。
我想盡可能保護存儲在sqlite數據庫中的密碼。我認爲哈希它,也許放一種鹽。然而,把它放在一個資源是愚蠢的,所以也許硬核鹽是我下一個最好的解決方案。問題是,我將需要相同的鹽爲服務器+客戶端 – mamcx
思考它,當BD是同步,在那一刻,我在線,我想知道如果在登錄選項我可以返回散列,存儲它在keychan中使用它... – mamcx
@mamcx:請參閱更新 – NotMe