在本地而不是服务器端做某些事情是安全的吗?

比方说,我有一个iPhone应用程序通过PHP API与服务器上的数据库进行通信,并且我在$_SESSION保存类似用户标识的问题(您知道,这可能会有些痛苦) ,所以我可以将其存储在NSUserDefaults或iPhone钥匙串中,并在需要时将其发送到服务器,在应用端而不是服务器端做这样的事情是错误的/不安全的?

根据这个线程关于NSUserDefaults :在一个普通的设备上,你不能真正得到它,但如果它是越狱plist文件很容易阅读和更改,它不是encryption,因此它可能不安全的用户名,密码或任何个人信息,除非你保存它,你做某种forms的encryption散列,然后保存。

另一方面,您可以尝试使用iOS Keychain或iCloud Keychain 。 它在这里说:

这是非常安全的,因为任何试图读取您的iCloud Keychain的新设备都需要下列其中一项:

  • 您现有的一台设备通过手动验收的推送通知validation连接。

    当您在其他设备上启用iCloud Keychain时,使用iCloud Keychain的其他设备会收到请求批准其他设备的通知。 批准附加设备后,您的iCloud Keychain将自动开始在该设备上进行更新。

  • 您的iCloud安全代码

    当您设置iCloud Keychain时,系统会要求您创build一个iCloud安全代码。 它可以是一个类似于您的设备的密码locking的4位数字代码,也可以为您自动生成更复杂的代码。 iCloud安全码用于授权其他设备使用您的iCloud Keychain。 它还用于validation您的身份,以便您可以执行其他iCloud Keychain操作,例如,如果丢失了所有设备,则恢复您的iCloud Keychain。

    错误地input代码多次导致手动validation方法

  • 短信validation到您的手机。

    使用您在首次设置iCloud Keychain时提供的支持SMS的电话号码的设备。 validation码通过短信发送到这个电话号码。 如果您无法访问此号码,请联系Apple支持人员 ,他们可以validation您的身份,以便您可以在新设备上完成设置。

此外,还可以通过启用双因素身份validation来保护您的iCloud帐户/ Apple ID,以便在许多情况下 – 在您的新设备上首次使用您的iCloud密码时,会触发除Apple自动发送的电子邮件密码在新设备上使用。

综上所述:

  1. 当您的密码在iCloud的新设备上使用时,您会收到电子邮件通知 – 无需selectjoin步骤。
  2. 钥匙串同步具有增强的保护/双因素身份validation,再次不需要selectjoin。
  3. 您可以selectjoinAppleID双因素身份validation,以进一步防止密码丢失/略过。