假設我有一個iPhone應用程序通過PHP
API與服務器上的數據庫進行通信,並且我在保存諸如$_SESSION
(you know, this can be painful sometimes)的用戶標識之類的問題時存在問題,所以我可以將其存儲在NSUserDefaults
或iPhone鑰匙串中,並在需要時將其發送到服務器,在應用端而不是服務器端做這樣的事情是錯誤的還是不安全的?在本地而不是服務器端做某些事情是否安全?
回答
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密碼的觸發推送通知警告,除了蘋果,當你的密碼是發送電子郵件自動在新設備上使用。
總結:
- 你得到電子郵件通知,當您的密碼是iCloud的新設備上使用 - 沒有選入所需的步驟。
- 鑰匙串同步具有增強的保護/雙因素身份驗證,同樣不需要選擇加入。
- 您可以選擇加入AppleID雙因素身份驗證,以進一步防止密碼丟失/竊取。
但我想使用正常的iOS鑰匙串要容易得多,而且還是安全的,對不對?另外,使用iCloud Keychain可能會導致問題,例如,如果一個家庭使用一個iCloud帳戶,並且兩個人*或多個*正在使用該應用,並且一個人試圖發佈內容,則可能會代表另一個*發佈,具體取決於誰首先註冊*,因爲他使用他的用戶標識來標識誰在發帖。 –
是的。但另一種情況將是一個不同的問題。:) –
- 1. 錯誤活的服務器上,而不是本地服務器
- 2. 使用ASP服務器端包含頭部段是否安全?
- 3. Capistrano網關僅用於某些服務器,但不是全部
- 4. WCF調用本地Windows服務而不是服務器的
- 5. 服務器,而不是客戶端
- 6. 假設COMET服務器實現的IP地址是否安全?
- 7. 在某個組件中存儲某些東西是否安全?
- 8. 服務器端安全
- 9. 在生產win2008 Web服務器上安裝SVN是否安全?
- 10. SSRS數據源在本地而不是工作在服務器
- 11. PHP在本地工作,而不是在服務器
- 12. AS3的URLRequest在本地工作,而不是在服務器
- 13. 的file_get_contents工作在本地而不是在服務器
- 14. IBAction - 在連接到服務器之前做一些事情
- 15. 什麼是在某些事件全部被觸發後做某些事的最佳做法
- 16. 我是否需要在服務器上安裝Crystal Reports的某些內容?
- 17. Sharepoint/C#:確定本地服務器是否爲Web前端
- 18. CSS作爲本地主機而不是服務器地址
- 19. 事實上API工作在本地主機上而不是活的服務器
- 20. 驗證碼超時時服務器上,而不是在本地
- 21. Socket.io與本地主機,而不是在Heroku服務器
- 22. 本地路由工作,而不是在Heroku服務器上
- 23. htaccess的 - 工作在本地,而不是遠程服務器上
- 24. 做fsockopen只允許某些服務器?
- 25. 顯示當前服務器負載是否是安全問題?
- 26. Index.html而不是客戶端的東西在服務器端
- 27. 僅調試服務器端代碼而不是腳本?
- 28. 離子服務在本地主機上,而不是服務器的IP
- 29. HTTP包服務器在生產中是否安全使用?
- 30. 服務器方法暴露在AJAX中:是否安全
你能更清楚地闡述你的具體用例嗎?真的,你打算向你存儲一些數據的方式將存儲在客戶端中,這將決定你應該考慮哪些安全要求。例如,如果您想要將該用戶標識存儲在客戶端中以唯一標識最終客戶端並可能根據此值提供訪問權限,那麼我認爲將該數據存儲在客戶端中時不需要任何其他安全機制地點(即登錄,使用某種訪問令牌等)將是非常成問題的。 –
嗯,我明白了,我會告訴你更多關於我的具體情況:當用戶註冊並登錄時,根據數據庫的不同,他會得到一個用於他的用戶名,* email等的id。將存儲在iPhone鑰匙串*(用於安全)*中。當用戶嘗試發佈某個ID時,需要確定發佈的是誰,這將從iPhone鑰匙串發送到服務器。所有這些都是將'id _SESSION'中的id保存起來的一種替代方法,因爲到目前爲止我已經遇到了一個關於這個問題的問題。 –
無論如何,如果您需要長時間保存這些數據,使用會話在這裏不太可行。 –