【问题标题】:Safe to store access token inside AsyncStorage?在 AsyncStorage 中存储访问令牌安全吗?
【发布时间】:2020-04-07 14:24:58
【问题描述】:

我正在考虑在 React Native 应用程序中存储用户访问令牌。最初我一直在看 Redux,但我注意到 RN 有 AsyncStorage,现在我假设在 IOS 的情况下这相当于 NSUserDefaults。我可能错了。

这是存储访问令牌的好方法吗?如果我可以帮助它进行简单的数据存储,我真的不想经历使用 Redux 的过程。

【问题讨论】:

    标签: reactjs react-native


    【解决方案1】:

    AsyncStorage 可能不是好的解决方案,取决于您的服务器如何处理您的请求。

    但是您可以使用 Redux 和 Redux-persist,使用转换参数可以加密您的数据,

    https://github.com/rt2zz/redux-persist#transforms

    密钥加密:https://github.com/maxdeviant/redux-persist-transform-encrypt

    您仍将使用 AsyncStorage,但这次使用加密层来保护您的数据

    【讨论】:

      【解决方案2】:

      Redux 是关于数据流控制的。不一定是长期储存。如果你想持久化 redux 数据,你最终会使用 AsyncStorage 来做到这一点。

      AsyncStorage 在未越狱的 iOS 设备上被沙盒化。但是,数据并未以任何方式加密。

      对于这两个平台更安全的解决方案似乎是https://github.com/pradeep1991singh/react-native-secure-key-store

      【讨论】:

        【解决方案3】:

        AsyncStorage 对于敏感信息不安全。阅读更多here

        在您的用例中,最好使用 Firebase 服务来获取令牌。 当应用启动时,您可以执行类似的操作

        var auth = firebase.auth().onAuthStateChanged(function(user) {
          if (user) {
            user.getIdToken().then(function(data) {
              console.log(data)
              // Save it redux, or component state(in that case you need to do this in every component where token will be used
        
             // Unsubscribe from listener 
             auth()
            });
          } else {
            // User is not authenticated
            // Unsubscribe from listener 
             auth()
          }
        });
        

        【讨论】:

          【解决方案4】:

          react-native-keychain

          这是安全的。另外,如果我没记错的话(不要在以下任何内容中引用我的话),您也许可以使用它让用户能够在该设备上登录到相同的应用程序/webapp;或其他设备。我还认为您可以与您开发的其他应用共享登录详细信息,前提是这些应用在捆绑标识符中具有相同的域。

          【讨论】:

            猜你喜欢
            • 2012-09-11
            • 2016-07-23
            • 2019-04-20
            • 2021-07-19
            • 2012-10-03
            • 1970-01-01
            • 2012-04-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多