使用 firebase 隐藏第三方 API-key
Hide 3rd party API-key with firebase
我正在用 Firebase 构建网站。这是一个简单的查找服务,它只有一个输入元素,可以向第 3 方 api 发出请求。
www.3rdparty.com/api/[myapikey]/method
问题是我被限制为每秒 x 个请求,我无法向用户公开我的 api-key。
我的最终任务是将响应存储在 firebase 中,以便我可以限制到达第 3 方的请求数量(缓存功能)
将这样的 API 密钥放入应用程序的客户端代码中会带来恶意用户获取您的密钥并将其用于自己目的的风险。您对此无能为力,除了不将 API 键包含到客户端代码中。这同样适用于 Android 和 iOS 代码 btw.
由于您不能将 API 键放在客户端代码中,因此您必须将其 运行 放在服务器上。这是在 Firebase 架构中使用服务器端代码的一个非常常见的场景:代码需要访问一些普通客户端无法信任的信息。它包含在我们的 blog post on common Firebase application architectures.
中的模式 2 中
来自那个博客post:
An example of such an architecture in action would be clients placing tasks for the server to process in a queue. You can have one or more servers picking off items from the queue whenever they have resources available, and then place the result back into your Firebase database so the clients can read them.
我正在用 Firebase 构建网站。这是一个简单的查找服务,它只有一个输入元素,可以向第 3 方 api 发出请求。
www.3rdparty.com/api/[myapikey]/method
问题是我被限制为每秒 x 个请求,我无法向用户公开我的 api-key。
我的最终任务是将响应存储在 firebase 中,以便我可以限制到达第 3 方的请求数量(缓存功能)
将这样的 API 密钥放入应用程序的客户端代码中会带来恶意用户获取您的密钥并将其用于自己目的的风险。您对此无能为力,除了不将 API 键包含到客户端代码中。这同样适用于 Android 和 iOS 代码 btw.
由于您不能将 API 键放在客户端代码中,因此您必须将其 运行 放在服务器上。这是在 Firebase 架构中使用服务器端代码的一个非常常见的场景:代码需要访问一些普通客户端无法信任的信息。它包含在我们的 blog post on common Firebase application architectures.
中的模式 2 中来自那个博客post:
An example of such an architecture in action would be clients placing tasks for the server to process in a queue. You can have one or more servers picking off items from the queue whenever they have resources available, and then place the result back into your Firebase database so the clients can read them.