React native 将远程API密钥与react native一起使用的安全方法?

React native 将远程API密钥与react native一起使用的安全方法?,react-native,React Native,我正在用react native开发一个前端,我需要从Google或MapBox使用静态地图。为了在开发时存储Api密钥,我使用了一个带有react native config的.env文件,但它们的自述文件说: 请记住,此模块不会混淆或加密机密 打包,因此不要将敏感密钥存储在.env中。基本上是 无法阻止用户反向工程移动应用程序 所以在设计你的应用程序(和API)时要牢记这一点 那么,有没有办法混淆react native(适用于Android和IOS)上的Api键 或者,唯一的方法是在后端创

我正在用react native开发一个前端,我需要从Google或MapBox使用静态地图。为了在开发时存储Api密钥,我使用了一个带有react native config的.env文件,但它们的自述文件说:

请记住,此模块不会混淆或加密机密 打包,因此不要将敏感密钥存储在.env中。基本上是 无法阻止用户反向工程移动应用程序 所以在设计你的应用程序(和API)时要牢记这一点

那么,有没有办法混淆react native(适用于Android和IOS)上的Api键

或者,唯一的方法是在后端创建一个端点,执行代理函数在此处添加api密钥,类似于:

import express, { Application } from "express";
import * as https from "https";

const app: Application = express();

app.get("/map", (request, response) => {
    const params: string = "Get the params from request";
    https.request(`https://maps.googleapis.com/maps/api/staticmap?key=${process.env.API_KEY}&${params}`, (result) => {
        result.pipe(response, { end: true });
    });
});
我可以看到几个缺点,我会从我的主机消耗更多的带宽,我会减慢我的应用程序(首先是从前端到后端的请求,然后是从后端到谷歌静态地图的请求,在后端从谷歌地图得到响应,最后前端从后端得到响应)


PS:请记住,我说的是谷歌地图静态版,而不是谷歌地图sdk Android版或谷歌地图sdk IOS版。

MapBox有很好的支持。因此,在询问他们之后,以下是回答:

不幸的是,您描述的代理方法违反了 我们的服务条款

我想确定你已经看过我们的导游好几年了。它包含了很多关于 管理您的帐户

根据我们的经验,在客户方面 对正在发生的事情有一个大致的了解(通过监视您的 帐户统计信息)已足以控制和限制访问 大多数时候。如果您需要频繁的编程访问 代币轮换,你可以利用我们的代币轮换

综上所述,按应用程序id限制代币也是我们关注的焦点 这是我们经常收到的请求。我们的工程团队工作很努力 为我们的客户提供白名单功能。在那之前,, 如果你有任何关于或正在看的问题 意外的统计数据。我们总是很高兴与您一起工作,可以 进入任何与您有关的使用模式

如果您对您的账户统计或发票有其他问题, 一定要查看我们的网站

希望这有帮助