我正在开发带有react-native的前端,并且我需要使用Google或MapBox形式的静态地图。为了在开发时存储Api密钥,我在使用带有react-native-config的.env文件,但他们的自述文件说:
请记住,此模块不会混淆或加密以下内容的机密 包装,因此请勿将敏感密钥存储在.env中。基本上是 不可能阻止用户对移动应用进行反向工程 机密,因此请牢记这一点来设计您的应用程序(和API)。
那么,有什么方法可以混淆React-native上的Api密钥(对于Android和IOS)?
或者唯一的方法是在后端创建一个端点,执行代理功能以在此处添加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 });
});
});
我看到了几个缺点,我将从托管中占用更多带宽,并且会降低我的应用程序的速度(首先是从前端到后端的请求,在从后端到Google静态地图的请求之后,在后端之后从Google地图获取响应,最后在前端获取来自后端的响应)
PS:请记住,我所说的是静态的Google地图,而不是Android的google maps sdk或iOS的google maps sdk。
答案 0 :(得分:1)
MapBox有很好的支持。因此,在询问他们之后,便是答复:
不幸的是,您描述的代理方法违反了 我们的服务条款。
我想确保您已经阅读了using Mapbox securely的指南。它包含了许多很棒的技巧和最佳实践, 管理您的帐户。
根据我们的经验,cycling tokens在客户端已配对 大致了解正在发生的事情(通过监视您的 帐户统计信息)足以控制和限制访问 大多数时候。如果您需要频繁的程序化访问 令牌轮换,您可以利用我们的Tokens API。
说了这么多,在我们的雷达上,通过应用程序ID 限制令牌是 这是我们收到的常见要求。我们的工程团队正在努力 为我们的客户提供白名单功能。直到那时, 如果您对your statistics有疑问,或者正在 意外的统计数据。我们总是很高兴与您合作,并且可以期待 进入适合您的任何使用模式。
如果您对帐户统计信息或发票还有其他疑问, 请务必查看我们的Statistics FAQs。
希望这会有所帮助!