在React Native和Expo中加密敏感数据

Out*_*Box 6 encryption cryptography react-native expo

我正在与React Native和Expo一起开发移动应用程序,以提供安全解决方案。项目所有者希望在应用程序中存储敏感的授权密钥,用于与REST服务器联系并访问受保护的数据。他要求此密钥至少要加密,并且要尽可能地从外部读取。

我知道topis:

在React Native中保存敏感数据

React Native的异步存储是否安全?

及有关KeyChain,但它们不涉及Entption和Expo问题。

那么,使用最佳和通用的解决方案来尽可能地在React Native Expo应用中保存这些数据?

mil*_*rac 5

我最近参与了一个 React Native 项目,与您一样存在安全问题。安全性不是一个简单的问题,我也不是专家,但这就是我们所做的。

我们用于react-native-aes-encryption加密和散列,react-native-rsa用于生成公钥/私钥对。为了正确使用这些库,您最好了解基本的密码学概念。

我们曾经react-native-keychain从钥匙串读取/写入数据。如果您想存储一些小的敏感数据,Keychain 是一种可行的方法。它已在所有 Apple 操作系统中使用,以确保您的密码安全。也就是说,如果您想为两个平台构建您的应用程序,该组件在 Android 端的工作不会像预期的那样无缝。

除此之外,我对世博会一无所知。我希望这些库也适合你。

  • 所以我可以理解,它在哪里说他保留客户端 API 密钥?对 rsa pub/priv 密钥的引用是对密钥的唯一引用,这与 API 密钥不同。 (3认同)
  • 我投反对票纯粹是因为这个解决方案不安全。将 API 密钥保留在客户端是您在任何情况下都不应该做的事情,无论加密程度如何。正确的解决方案是简单地使用一个经过身份验证的 Web 服务来代表客户端处理请求。 (2认同)
  • 我同意你的看法。在我们的应用程序中,我们没有存储任何 API 密钥,或者在任何应用程序中都不应该存储任何身份验证令牌。我只是简要说明您可以使用哪些组件来为您的应用程序添加加密/安全性。 (2认同)

小智 5

世博会现在有 SecureStore,它存储加密的数据。

详细信息:https : //docs.expo.io/versions/latest/sdk/securestore