如何在 React Native 或 expo 代码中存储敏感数据?(带有钥匙串和密钥库)

Bro*_*oel 7 javascript security oauth oauth-2.0 react-native

我看到几个问题询问“如何在 React Native 中存储敏感数据”(例如这个这个),但是,所有这些情况都在讨论动态获取一些敏感数据(例如,从服务器),然后存储它使用AsyncStorage. 但是,如果您需要在代码中写入敏感的令牌/密码怎么办?

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

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

谢谢

Jul*_*ode 7

如何在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);
  });
Run Code Online (Sandbox Code Playgroud)