AsyncStorage安全吗?

时间:2016-07-15 13:17:02

标签: react-native

我想在我的React Native应用中保留用户的帐户凭据(即用户名和密码)。我应该使用--pod-eviction-timeout=5m0s: The grace period for deleting pods on failed nodes.吗?

换句话说,我想知道AsyncStorage是否以及如何保护其内容。 docs对此保持沉默。

(我正在使用RN v0.28)

4 个答案:

答案 0 :(得分:2)

  

AsyncStorage是否安全?

没有AsyncStorage不安全,文档说:

  

AsyncStorage是一个简单的,未加密的,异步的,持久的,   应用程序全局的键值存储系统。应该使用它   而不是LocalStorage。

要在原生方面存储安全信息,我建议您使用react-native-keychainreact-native

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

对于Android,它使用:

  • API级别16-22使用Facebook Conceal
  • API级别23+使用Android Keystore

这是一个简单的例子:

// 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

上找到其内容

enter image description here

source code for RCTAsyncLocalStorage

应该是显而易见的

答案 2 :(得分:1)

如果您使用的是Expo sdk,则可以使用SecureStore获取敏感信息。

答案 3 :(得分:0)

您应该始终在客户端应用程序中以纯文本格式保存用户名和密码。请注意,从不以纯文本格式保存敏感数据。您应该使用令牌来验证用户身份。

关于AsyncStorage的安全性,请阅读此answer。 TL; DR数据是安全的,除非攻击者有权访问设备或设备是root(android)/越狱(iOS)。数据未加密。因此,通过对设备的root或物理访问(并且设备不受保护),可以访问该数据。