You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

针对Firebase onRequest v1函数的IP黑名单防火墙规则咨询

解决Firebase云函数IP黑名单拦截问题

方法1:在云函数代码中直接拦截IP

在onRequest函数的最开头加入IP校验逻辑,从请求入口直接阻断目标IP,避免后续业务逻辑执行:

exports.yourTargetFunction = functions.https.onRequest((req, res) => {
  // 定义需要拦截的IP列表
  const blockedIps = ['163.172.220.11'];
  // 获取真实客户端IP(如果函数经过代理,优先从X-Forwarded-For头提取)
  const clientIp = req.ip || req.headers['x-forwarded-for']?.split(',')[0].trim();

  if (blockedIps.includes(clientIp)) {
    return res.status(403).send('Forbidden');
  }

  // 原有业务逻辑代码
  // ...
});

注意:如果函数部署在GCP负载均衡之后,要确保X-Forwarded-For头能正确传递,否则req.ip会显示负载均衡的IP而非真实客户端IP。

方法2:用GCP Cloud Armor实现边缘层拦截

这种方式能在请求到达云函数之前就完成拦截,完全不消耗云函数资源:

  • 为你的云函数配置VPC连接器,将函数接入VPC网络
  • 创建Cloud Armor安全策略,添加IP黑名单规则,把163.172.220.11加入黑名单列表
  • 将该安全策略关联到云函数的入口网关或负载均衡

方法3:通过Firebase Hosting重写规则拦截(若函数通过Hosting暴露)

如果你的云函数是通过Firebase Hosting的重写规则对外提供服务,可在firebase.json中配置IP拦截规则:

{
  "hosting": {
    "rewrites": [
      {
        "source": "**",
        "condition": {
          "ip": "163.172.220.11"
        },
        "function": "blockedIpHandler"
      },
      {
        "source": "**",
        "function": "yourOriginalFunction"
      }
    ]
  }
}

同时创建一个专门返回403的拦截函数:

exports.blockedIpHandler = functions.https.onRequest((req, res) => {
  res.status(403).send('Forbidden');
});

内容的提问来源于stack exchange,提问作者Rob Terrell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:24:53