【问题标题】:Is it Safe/Good practice to save global values in NSUserDefaults?在 NSUserDefaults 中保存全局值是否安全/良好的做法?
【发布时间】:2010-08-31 00:32:24
【问题描述】:
  1. 我正在制作一个 iPhone 应用程序,其中 用户名和密码是必需的 发出请求的所有屏幕 服务器,我正在考虑 将这两个值保存在 NSUserDefault 而不是传递一个 周围的物体。

  2. 我还认为如果用户登录一次会很有用, 并再次使用该应用程序然后用户 不必输入他/她的详细信息 再次。

但我很好奇将其用于第一个要求是否安全/良好?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    我没有反对将这些数据保存在用户默认值上。我没有得到在每个请求上公开用户凭据的想法。

    我建议您请求一次凭据,通过您的服务器进行身份验证并返回“会话令牌”。保存此令牌并使用它来验证每个请求的用户。 (这意味着您将令牌保存在您的服务器上,或者您将使用算法检查令牌)

    这样做您不会一直公开用户凭据,您可以控制会话,并且可以在需要时使会话过期,从而强制用户再次登录。

    对于更复杂的实现,您可以谷歌 OAuth 或 XAuth 以及一些相关的身份验证方法。

    干杯, vfn

    【讨论】:

    • 问题是服务器没有这个“会话令牌”的机制!这就是为什么我要走这条路。这就是api页面上写的“所有请求都需要验证”。
    • 是的,但是验证可以针对任何东西,不一定是登录名和密码。仅当您对服务器没有任何控制权时,在这种情况下,您需要在每次调用时发送凭据。
    • 是的,这就是问题所在,我无法控制服务器端:(并且需要在每个请求中发送凭据。感谢 vfn。
    【解决方案2】:

    在 NSUserDefault 中保存全局值是合理的,您希望在应用程序被杀死和重新启动后仍然存在(在 iOS4.0 下可能发生)。

    密码应保存在内存中(可能是单例模型对象)或钥匙串中,因为各种 iTunes 备份数据库可能会暴露存储在用户默认值中的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多