重新加载之间的 Cookie

Cookie between reloads

我的应用程序通过 POST-请求服务器获得授权。作为回应,我收到 json 文件和 cookie。

我想阻止用户每次都输入凭据。所以问题是如何在应用程序启动之间存储 cookie(仅会话 cookie)。我在这里关注 3 个案例:

  1. 用户按下 "Home" 并在应用程序被 iOS
  2. 终止之前返回到应用程序
  3. 用户按下 "Home" 并在应用程序被 iOS
  4. 终止后返回到应用程序
  5. 用户通过从多任务处理中滑出应用程序强制退出应用程序

看来我可以使用这样的东西: NSHTTPCookieStorage.sharedHTTPCookieStorage().cookiesForURL(NSURL(string: "url")!)

但是它安全吗?它会在案例 2 和案例 3 中持续存在吗?

过去几周我一直在处理类似的 iOS 问题。

根据凭据需要的安全程度,我建议考虑使用浏览器的 localStorage 功能来解决此问题,而不是使用 cookie。

localStorage 和 sessionStorage 比 cookie 更容易操纵,跨域保护有助于避免用户操纵和第 3 方尝试。

如果要处理几乎所有其他浏览器,通常会使用 sessionStorage,因为每次登录会话都会保留这些值。但是,iOS 在移动设备上会过于频繁地清除会话存储,使其变得无用。

使用 localStorage 的危险在于值在浏览器会话之间持续存在。这成为一个问题的地方是,如果合法用户从第 3 方设备登录,凭据将保留在该设备上,除非用户有办法清除它们(使用 javascript 很容易实现)。

使用sessionStorage和localStorage的优点是:
1. 与 cookie 相比易于操作
2. 无需继续向服务器回发 cookies 值
3. 减少服务器开销

请注意,特别是在 iOS 上,如果启用了隐私浏览,会话和本地存储都会被禁用。