我想在我的React Native应用中保留用户的帐户凭据(即用户名和密码)。我应该使用--pod-eviction-timeout=5m0s: The grace period for deleting pods on failed nodes.
吗?
换句话说,我想知道AsyncStorage
是否以及如何保护其内容。 docs对此保持沉默。
(我正在使用RN v0.28)
答案 0 :(得分:2)
AsyncStorage是否安全?
没有AsyncStorage不安全,文档说:
AsyncStorage是一个简单的,未加密的,异步的,持久的, 应用程序全局的键值存储系统。应该使用它 而不是LocalStorage。
要在原生方面存储安全信息,我建议您使用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);
});
答案 1 :(得分:1)
否(至少在iOS上,RN v0.28)
AsyncStorage
将键值对保存为Documents目录中的纯文本JSON文件。
如果您在iOS模拟器中运行它,则可以在~/Library/Developer/CoreSimulator/Devices
答案 2 :(得分:1)
如果您使用的是Expo sdk,则可以使用SecureStore
获取敏感信息。
答案 3 :(得分:0)
您应该始终在客户端应用程序中以纯文本格式保存用户名和密码。请注意,从不以纯文本格式保存敏感数据。您应该使用令牌来验证用户身份。
关于AsyncStorage的安全性,请阅读此answer。 TL; DR数据是安全的,除非攻击者有权访问设备或设备是root(android)/越狱(iOS)。数据未加密。因此,通过对设备的root或物理访问(并且设备不受保护),可以访问该数据。