【问题标题】:How to store sensitive data in React Native or expo code ? ( with Keychain and Keystore )如何在 React Native 或 expo 代码中存储敏感数据? (带钥匙串和密钥库)
【发布时间】:2017-04-09 09:12:44
【问题描述】:

我看到一些关于“如何在 React Native 中存储敏感数据”的问题(例如 this 和 this),但是,所有这些案例都在讨论动态获取一些敏感数据(来自服务器,例如),然后使用AsyncStorage 存储它。 但是,如果您需要在 CODE 中写入敏感的 TOKEN/PASSWORD 怎么办?

比如我要实现这个库:https://github.com/fullstackreact/react-native-oauth 正如您在第一个示例中看到的,我必须在代码中写入秘密令牌。

在所有 react-native 项目目录中是否有一个文件,我可以在其中放置我的令牌,然后在应用程序中获取它? 在应用程序中操作这些安全令牌有多安全?

谢谢

【问题讨论】:

  • Asyncstorage 是一个永久存储,所以即使有一个控件在离开应用程序后删除它们,我也不会在那里保存重要信息。因此,您可以使用临时存储值的 mobx 或 redux 来存储这些信息。
  • @BurakKarasoy 但是使用 redux/mobx 绝不会以任何特殊方式保护信息。此外,信息不会持续存在,您仍然面临设置这些值的挑战。
  • 我的意思是,如果你使用 redux/mobx 保存数据,这些数据会存储在临时内存中,而当你关闭应用程序时,这些数据就会消失。但是,如果您以异步方式存储此数据,则它会保存在本地文件中。您必须自己在关闭应用程序时删除这些数据。第一种方式似乎更安全。我不会在永久存储中写入 pw 或评论数据。
  • 如果你想存储敏感数据你可以看看这个:stackoverflow.com/a/45550361/7618742

标签: javascript security react-native oauth oauth-2.0


【解决方案1】:

如何在 React Native 代码中存储敏感数据?

图书馆

现在多个库允许您在 React Native 代码中存储敏感信息:

注意:在原生端,这些库可以使用:

示例

这里是一个使用react-native-keychain 来存储敏感数据的例子,react-native

对于 iOS,它使用钥匙串共享功能

对于 Android,它使用:

  • API 级别 16-22 使用 Facebook 隐藏
  • API 级别 23+ 使用 Android 密钥库

你可以这样使用它:

// Generic Password, service argument optional
Keychain
  .setGenericPassword(username, password)
  .then(function() {
    console.log('Credentials saved successfully!');
  });

// service argument optional
Keychain
  .getGenericPassword()
  .then(function(credentials) {
    console.log('Credentials successfully loaded for user ' + credentials.username);
  }).catch(function(error) {
    console.log('Keychain couldn\'t be accessed! Maybe no value set?', error);
  });

【讨论】:

    【解决方案2】:

    另外,可以使用Realm等加密数据库,加密密钥会存储在Keychain中。

    Expo 也可能不支持 Realm(因此您需要使用裸 React Native 工作流或弹出)。

    【讨论】:

      【解决方案3】:

      一般来说,AsyncStorage 用于在 react-native 中存储数据,但它根本不安全。 expo-secure-store 由 expo-team 维护和开发,工作原理与 AsyncStorage 相同。

      它使用加密的钥匙串服务,在存储和检索数据时对数据进行哈希处理,使其超级安全。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-01
        • 2017-09-05
        • 2011-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-27
        相关资源
        最近更新 更多