当前位置: 首页 > 知识库问答 >
问题:

google maps react前端API密钥存储

袁致远
2023-03-14

我正在构建一个全栈MERN(MongoDB Express React Nodejs)应用程序。我正在使用NPM包Google Maps React在我的网站上显示Google地图。我很难想出一个策略来保护我的前端google maps API密钥。

为了充分理解我的问题,查看下面的Google Maps React组件代码可能会有帮助

import {Map, GoogleApiWrapper} from 'google-maps-react';
 
export class MapContainer extends Component {
  render() {
    return (
      <Map google={this.props.google} >
 
      </Map>
    );
  }
}
 
export default GoogleApiWrapper({
  apiKey: (YOUR_GOOGLE_API_KEY_GOES_HERE)
})(MapContainer)

可能的解决办法

解决方案A

  1. 在我的Mongo数据库中存储密钥
  2. 数据库发出GET请求以获取google Maps API密钥
  3. 将API关键字数据字符串放入google maps组件

解决方案B

  • 注意:我对Google Maps React节点模块文件做了一些深入的挖掘。我在google maps react节点模块文件中找到了.env和.env.example文件。env.example文件显示gapi_key=fill_in_your_key_here
  1. 在google maps react节点模块文件中存储api密钥

对解决方案A的关注

  • 可能的解决方案不安全
  • 用户可以访问API密钥数据

与解决方案B有关的问题

  • 节点模块是我的.gitignore文件的一部分,因此部署应用程序时,google maps API密钥将不可用

谢谢你的想法和时间。

PS我使用了create-react-app

共有1个答案

华俊贤
2023-03-14

您有各种选项来安全地存储api密钥。如果您正在使用circoleci进行连续构建,则可以创建一个环境键。检查构建解决方案是否有类似的内容。

还有一些加密文件的替代方法,如git-secret。这样就可以使用环境配置文件。

底线不要将密钥存储在代码或配置文件中,除非您对其进行加密。

 类似资料:
  • 我想把我的Django前端和后端分开。实际上创建了2个Django服务器。 在前端存储身份验证访问令牌和刷新令牌的最佳方式是什么? 调用API时验证身份验证的最佳方法是什么? 谢谢!

  • Swagger支持api密钥的安全性,但这似乎仅限于单个参数。 有没有办法定义一组参数(key和secret)作为请求中的参数? 或者,唯一的方法就是跳过安全方案,只将这些参数添加到每个请求中?

  • 我们试图更好地保护API密钥(想想用来验证客户端到endpoint的令牌)。这将全部在我们的内部网络上,但我们仍然希望确定只有我们的移动客户端可以调用endpoint。 我想我们可以将API键放入Firebase远程配置参数中(在应用程序中内置一个无效的默认值)。但是,远程配置的Firebase文档说: 不要将机密数据存储在远程配置参数键或参数值中。可以解码存储在项目远程配置设置中的任何参数键或值

  • 问题内容: 我需要将2个密钥存储到KeyStore中,这是相关代码: 尽管我得到了执行,但“私钥必须带有证书链” 那到底是什么?以及我将如何生成它? 问题答案: 您还需要提供私钥条目的证书(公钥)。对于由CA签名的证书,链是CA的证书和最终证书。对于自签名证书,您只有自签名证书。 示例: 要生成证书,请点击以下链接: 示例:

  • 使用/生成的密钥和证书存储在称为密钥库的数据库中。 默认情况下,此数据库存储在名为.keystore的文件中。 您可以使用java.security包的KeyStore类访问此数据库的内容。 它管理三个不同的条目,即PrivateKeyEntry,SecretKeyEntry,TrustedCertificateEntry。 PrivateKeyEntry SecretKeyEntry Trust

  • MySQL Server Enterprise edition与Hashicorp集成,在静止状态下加密数据。加密密钥存储在HashiCorp存储库中,如MySQL文档中所述。 基于HashiCorp文档[1][2],我们可以使用Azure密钥库来存储秘密。 是否可以集成mysql-hashicorp-Azure密钥库 MySQL Enterprise Edition使用hashicorp加密 加