使用React-Native使用远程API密钥的安全方法吗?

时间:2019-05-09 11:51:04

标签: react-native

我正在开发带有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。

1 个答案:

答案 0 :(得分:1)

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

  

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

     

我想确保您已经阅读了using Mapbox securely的指南。它包含了许多很棒的技巧和最佳实践,   管理您的帐户。

     

根据我们的经验,cycling tokens在客户端已配对   大致了解正在发生的事情(通过监视您的   帐户统计信息)足以控制和限制访问   大多数时候。如果您需要频繁的程序化访问   令牌轮换,您可以利用我们的Tokens API

     

说了这么多,在我们的雷达上,通过应用程序ID 限制令牌是   这是我们收到的常见要求。我们的工程团队正在努力   为我们的客户提供白名单功能。直到那时,   如果您对your statistics有疑问,或者正在   意外的统计数据。我们总是很高兴与您合作,并且可以期待   进入适合您的任何使用模式。

     

如果您对帐户统计信息或发票还有其他疑问,   请务必查看我们的Statistics FAQs

     

希望这会有所帮助!