touchableopacity react icon react-native asyncstorage

react-native - icon - textinput react native



¿El almacenamiento asincrónico de React Native es seguro? (5)

De react-native doc - https://facebook.github.io/react-native/docs/asyncstorage.html

AsyncStorage es un sistema de almacenamiento de valor-clave simple, no cifrado, asíncrono y persistente que es global para la aplicación.

No es seguro ya que almacena pares clave-valor en forma no encriptada en el dispositivo.

Utilizó el llavero para iOS y KeyStore para Android para almacenar datos de forma segura.

Quiero almacenar datos confidenciales localmente en una aplicación React Native.

¿Los datos solo están disponibles para la aplicación que lo escribió?


AsyncStorage no es adecuado para almacenar información confidencial. Puede encontrar esto útil: https://github.com/oblador/react-native-keychain

Utiliza Facebook oculto / almacén de claves de Android para almacenar datos cifrados a SharedPreferences (Android) y llavero en iOS. (Yo co-autor de la lib). Asegúrese de leer todo el archivo léame para comprender lo que ofrece.


Me enfrenté al mismo problema en un proyecto en el que estaba trabajando, estábamos usando un contenedor personalizado para AsyncStorage, almacenamos cierta cantidad de datos y luego tratamos de recuperar los mismos datos ... y fue muy fácil.

Superamos ese problema utilizando Realm con la opción de encriptación y fue una solución más fácil, más rápida y mejor que AsyncStorage.


No, AsyncStorage no es seguro para datos confidenciales. AsyncStorage simplemente guarda datos en documentos en el disco duro del teléfono y, por lo tanto, cualquier persona que tenga acceso al sistema de archivos del teléfono puede leer esos datos. Por supuesto, si esto es problemático o no para usted depende de lo que quiere decir con "datos senstive".

Al menos en iOS, es cierto que los datos solo están disponibles para la aplicación que lo escribió, debido a la política de sandboxing de Apple. Esto no impide que los iPhones con jailbreak con acceso de raíz al sistema de archivos obtengan lo que quieran, ya que AsyncStorage no encripta ninguno de sus datos. Pero, en general, no guarde los datos confidenciales en AsyncStorage, por la misma razón que no debe codificar datos confidenciales en su código de JavaScript, ya que puede descompilarse y leerse fácilmente.


Para aplicaciones muy sensibles o datos de usuarios, puede probar algo como https://github.com/oblador/react-native-keychain en iOS (utiliza iOS Keychain) o https://github.com/classapp/react-native-sensitive-info tanto para Android como para iOS (usa Android Shared Preference y iOS Keychain).

Ambos vienen con API muy fluida y una forma sencilla de vincularse con el enlace de react-native link y son una forma más segura de preservar los datos que desea mantener alejados de las miradas indiscretas.