我看到几个问题询问“如何在 React Native 中存储敏感数据”(例如 this 和 this),但是,所有这些案例都在讨论动态获取一些敏感数据(从服务器,例如例如),然后使用
AsyncStorage
存储它。
但是,如果您需要在代码中写入敏感的令牌/密码怎么办?
例如,我想实现这个库:https://github.com/fullstackreact/react-native-oauth 正如您在第一个示例中看到的,我必须在代码中写入秘密令牌。
所有react-native项目目录中是否有一个文件可以放置我的令牌,然后在应用程序中获取它? 在应用程序中操作这些安全令牌有多安全?
谢谢
如何在React Native代码中存储敏感数据?
现在多个库允许您在 React Native 代码中存储敏感信息:
注意:在本机端,这些库可以使用:
react-native-keychain 来使用 react-native 存储敏感数据的示例
对于 iOS,它使用钥匙串共享功能对于 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);
});
expo-secure-store由expo-团队维护和开发,与AsyncStorage相同。
它使用加密的钥匙串服务,在存储和检索时对数据进行哈希处理,使其超级安全。
Expo 也可能不支持 Realm(因此您需要使用裸 React Native 工作流程或弹出)。