从react-native应用程序访问敏感的API密钥

dw1jzc5e  于 2023-08-07  发布在  React
关注(0)|答案(1)|浏览(122)

有一个SDK需要从移动的应用程序访问API密钥。这意味着我不能简单地从lambda端点或无服务器端点调用SDK并发送回数据。
有什么安全的方法可以让移动的用户访问此API密钥而不会滥用它?
我认为在手机上存储API密钥本身是一个坏主意。我的想法是简单地让用户点击一个给他们密钥的端点,但这会以某种方式被篡改吗?每个用户都需要一个JWT令牌来访问API端点(fyi)。

20jt8wwn

20jt8wwn1#

仅供参考 * 所有客户端应用程序通信和应用程序数据应被视为“不安全”的用户访问。*

  • 最终用户可以通过代理甚至其他应用程序侦听网络请求。
  • iOS / Android应用程序上的硬编码也不会保护你。这是因为您可以反编译这些应用程序(尤其是Android)和/或从本地代码或来自codepush bundle的网络请求(如果适用)检查JavaScript bundle。
    客户端sdk API密钥
  • 如果密钥是面向客户端的,并且应用程序是公开可用的,则应将其视为公钥。如果不是这样的话,那就是密钥的分发方式有问题,或者目标受众需要锁定为仅受信任的用户(例如您如何登录和移交密钥,这些用户需要被信任这些密钥)
    建议

1.请遵循与特定API密钥的授权和令牌访问相关的指导原则。如果它是公钥,许多提供商将允许锁定密钥,因此它只能在您的特定应用/域上使用。
1.考虑你的目标用户。如果他们是授权帐户,那么创建授权+密钥通过后授权应该是合理的。
1.考虑使密钥唯一,以便您可以跟踪滥用。即每个用户获得从该服务动态生成的唯一Map密钥。如果这是你的钥匙,你可以很容易地限制访问。
1.您可以添加某种加密存储,例如react-native-encrypted-storage。用户登录后,存储在登录后提供给用户的密钥,然后在应用刷新时恢复。大多数应用程序将无法访问您的应用程序文件,并且使用加密存储,即使存在可以访问您的pap文件夹的应用程序,您也可以阻止轻松访问。

相关问题