【问题标题】:(iOS bug?) NSURLRequest cached authorization passes with incorrect credentials(iOS 错误?)NSURLRequest 缓存的授权通过不正确的凭据
【发布时间】:2017-03-21 10:00:32
【问题描述】:

我想知道 NSURLRequest.returnCacheDataElseLoad/.returnCacheDataDontLoad 缓存策略会忽略基本授权。所以下面的场景工作不正常:

  • 设置 URL 缓存策略以在向服务器请求之前使用本地缓存
  • 使用良好凭据提出新请求并收到成功响应
  • 切换到离线模式
  • 使用以前的 URL 发出请求,但授权凭据不正确
  • 注意第二个使用不正确凭据的请求是否成功

总体而言,如果应用程序中的离线模式是通过 iOS 系统缓存实现的,则此错误允许任何人登录。

有人熟悉这个问题吗?它至少发生在 iOS 10 上。我正在寻找如何以温和的方式修复它。

【问题讨论】:

    标签: ios nsurlrequest offline-caching nsurlrequestcachepolicy


    【解决方案1】:

    这是预期的行为。 NSURLCache 缓存仅基于 URL 本身,而不是基于请求的任何其他方面。 IIRC,不考虑标题、POST 正文等。 (我可能会忘记一些未被忽略的部分,但无论如何,凭据都是。)

    如果您想让您的应用程序支持多个用户帐户对服务器端数据的不同视图,您需要为每个用户使用单独的缓存,并且您需要以某种方式检查客户端的身份验证凭据。 (这本身可能是一个错误,顺便说一句,因为这意味着客户端和服务器在当前密码的概念方面可能会不同步。)

    【讨论】:

      猜你喜欢
      • 2017-07-15
      • 2023-03-17
      • 2015-12-11
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 2019-12-02
      相关资源
      最近更新 更多