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

问题描述 投票:0回答:4

我看到几个问题询问“如何在 React Native 中存储敏感数据”(例如 thisthis),但是,所有这些案例都在讨论动态获取一些敏感数据(从服务器,例如例如),然后使用

AsyncStorage
存储它。 但是,如果您需要在代码中写入敏感的令牌/密码怎么办?

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

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

谢谢

javascript security react-native oauth oauth-2.0
4个回答
7
投票

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

图书馆

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

注意:在本机端,这些库可以使用:

示例

这是使用

react-native-keychain 来使用 react-native 存储敏感数据的示例

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

对于 Android,它使用:

    API级别16-22使用Facebook Conceal
  • 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
投票
react-native中一般使用AsyncStorage来存储数据,但它一点也不安全。

expo-secure-store由expo-团队维护和开发,与AsyncStorage相同。

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


0
投票
也可以使用Realm等加密数据库,加密密钥将存储在Keychain中。

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


0
投票
我可以将react-native-encryptes-storage与expo-go v:49一起使用还是我需要开发版本?

© www.soinside.com 2019 - 2024. All rights reserved.