2014-02-19 13 views
2

假設我有一個iPhone應用程序通過PHP API與服務器上的數據庫進行通信,並且我在保存諸如$_SESSION(you know, this can be painful sometimes)的用戶標識之類的問題時存在問題,所以我可以將其存儲在NSUserDefaults或iPhone鑰匙串中,並在需要時將其發送到服務器,在應用端而不是服務器端做這樣的事情是錯誤的還是不安全的?在本地而不是服務器端做某些事情是否安全?

+1

你能更清楚地闡述你的具體用例嗎?真的,你打算向你存儲一些數據的方式將存儲在客戶端中,這將決定你應該考慮哪些安全要求。例如,如果您想要將該用戶標識存儲在客戶端中以唯一標識最終客戶端並可能根據此值提供訪問權限,那麼我認爲將該數據存儲在客戶端中時不需要任何其他安全機制地點(即登錄,使用某種訪問令牌等)將是非常成問題的。 –

+0

嗯,我明白了,我會告訴你更多關於我的具體情況:當用戶註冊並登錄時,根據數據庫的不同,他會得到一個用於他的用戶名,* email等的id。將存儲在iPhone鑰匙串*(用於安全)*中。當用戶嘗試發佈某個ID時,需要確定發佈的是誰,這將從iPhone鑰匙串發送到服務器。所有這些都是將'id _SESSION'中的id保存起來的一種替代方法,因爲到目前爲止我已經遇到了一個關於這個問題的問題。 –

+0

無論如何,如果您需要長時間保存這些數據,使用會話在這裏不太可行。 –

回答

0

As per this thread關於NSUserDefaults:在普通的設備上,你無法真正瞭解它,但是如果它被越獄,plist文件很容易閱讀和更改,它不會被加密,因此它可能對用戶名不安全,密碼或任何個人信息,除非你保存它,你做一些加密哈希,然後保存。

另一方面,您可以嘗試iOS Keychain or the iCloud Keychain。它說here說:

這是很安全的,因爲試圖讀取您的iCloud鑰匙串的任何新設備需要執行下列操作之一:

  • 一個現有的設備驗證通過與手動推送通知連接驗收。

    當您在其他設備上啓用iCloud Keychain時,其他使用iCloud Keychain的設備會收到請求批准其他設備的通知。批准附加設備後,您的iCloud Keychain將自動開始在該設備上進行更新。

  • 你的iCloud安全碼

    當您設置了iCloud鑰匙串,你被要求創建一個iCloud的安全代碼。它可以是一個類似於設備密​​碼鎖定的4位數字代碼,也可以爲您自動生成更復雜的代碼。 iCloud安全碼用於授權其他設備使用您的iCloud Keychain。它也用於驗證您的身份,以便您可以執行其他iCloud Keychain操作,例如,如果您丟失了所有設備,就可以恢復您的iCloud Keychain。

    Entering the code incorrectly multiple times causes manual verification method

  • 短信驗證您的手機。

    設備使用您在首次設置iCloud Keychain時提供的支持短信的電話號碼。驗證碼通過短信發送至此電話號碼。如果您無權訪問此號碼,contact Apple Support可以驗證您的身份,以便您可以在新設備上完成設置。

此外,您還可以protect your iCloud account/Apple ID by enabling two factor authentication如此,在許多情況下 - 在新設備上首次使用您的iCloud密碼的觸發推送通知警告,除了蘋果,當你的密碼是發送電子郵件自動在新設備上使用。

總結:

  1. 你得到電子郵件通知,當您的密碼是iCloud的新設備上使用 - 沒有選入所需的步驟。
  2. 鑰匙串同步具有增強的保護/雙因素身份驗證,同樣不需要選擇加入。
  3. 您可以選擇加入AppleID雙因素身份驗證,以進一步防止密碼丟失/竊取。
+2

但我想使用正常的iOS鑰匙串要容易得多,而且還是安全的,對不對?另外,使用iCloud Keychain可能會導致問題,例如,如果一個家庭使用一個iCloud帳戶,並且兩個人*或多個*正在使用該應用,並且一個人試圖發佈內容,則可能會代表另一個*發佈,具體取決於誰首先註冊*,因爲他使用他的用戶標識來標識誰在發帖。 –

+0

是的。但另一種情況將是一個不同的問題。:) –

相關問題