如何查找Back4App中发起API调用的来源以限制Google Maps API密钥?
解决Back4App云代码调用Google Maps API的密钥限制与账单问题
一、修正API密钥限制方式(解决调用被拒)
你是在Back4App云代码(服务器端)调用Google Maps API,而非前端浏览器,所以用HTTP Referrer(网址白名单)限制完全无效——服务器端请求不会携带浏览器的Referrer头。正确的限制方式是IP地址限制,按以下步骤操作:
- 获取Back4App云代码的出口IP
在你的Back4App云代码里加一段临时代码,调用第三方IP查询服务拿到出口IP,示例代码(Node.js环境):
部署后调用这个云函数,多调用几次确认所有可能的出口IP(可能不止一个)。const axios = require('axios'); Parse.Cloud.define('getOutboundIP', async () => { const response = await axios.get('http://icanhazip.com'); const ip = response.data.trim(); console.log('Back4App云代码出口IP:', ip); return ip; }); - 在Google API控制台设置IP限制
打开Google Cloud控制台的API密钥管理页面,找到你的Maps API密钥,把限制类型改成「IP地址(服务器端)」,将获取到的Back4App出口IP全部添加到允许列表,保存设置即可。
二、排查200美元意外账单
出现非预期的高额账单,基本是API密钥被盗用或存在未授权调用,按以下步骤排查:
- 查看Google Cloud的API调用日志
进入Google Cloud控制台的「API和服务」→「仪表板」,找到对应的Maps API(比如地理编码API、JavaScript地图API等),点击「查看日志」,筛选调用记录:- 检查调用来源的IP,看有没有非Back4App出口IP的异常调用;
- 查看请求参数,判断是否有大量重复或异常请求(比如批量地理编码、高频静态地图生成);
- 检查密钥泄露风险
- 确认Back4App云代码里的API密钥有没有硬编码后意外提交到公开代码仓库(比如GitHub);
- 检查是否在前端代码里用了同一个密钥——前端密钥很容易被爬虫扒走,如果是,给前端和服务器端分别创建不同密钥:前端用Referrer限制,服务器端用IP限制;
- 启用API用量警报
在Google Cloud控制台设置API用量阈值警报,当调用量或费用接近预算时,及时收到通知,避免再出现突发高额账单。
内容的提问来源于stack exchange,提问作者Procode
相关产品推荐
相关产品推荐

