【问题标题】:How to limit Firebase HTTP/Callable function request size?如何限制 Firebase HTTP/Callable 函数请求大小?
【发布时间】:2019-07-07 22:21:34
【问题描述】:

我们能否限制来自客户端的 HTTP/Callable 函数请求大小?我知道我们可以在请求到达后使用该函数检查请求,但为时已晚,因为我们需要先下载不需要的请求以进行验证。

我想知道是否有办法防止恶意用户以 10 mb 大小的请求淹没函数。首先,我认为一旦检测到无效请求就可以阻止用户,但我可以看到现在,即使用户被阻止,也不会阻止用户调用该函数。我当然可以阻止该用户访问后端功能,但请求仍然是从客户端发送的,我担心这可能会影响配额和我们的账单。

【问题讨论】:

标签: firebase google-cloud-functions


【解决方案1】:

您是对的 - 没有什么能阻止某人调用任何可调用或 HTTP 函数。但是你不能限制有效载荷的大小,而不是你提到的硬限制 10MB。但是,有人恶意执行此操作的可能性很小。如果您想将此视为一项功能,请file a feature request

【讨论】:

    【解决方案2】:

    确实没有优雅的解决方案可以解决您的问题。任何具有公共端点的服务都将遭受相同类型的攻击,甚至更多。您需要将端点置于负载均衡器、CDN 之后,并使用 Web 应用程序防火墙 (Cloud Armor) 实施攻击管理。

    1. 入站数据传输是免费的,因此这有助于降低成本部分。

    2. 除非必要,否则不要发布 HTTP 可调用函数。从您的其他服务调用这些函数。这可以启用负载平衡器、缓存和防火墙。

    3. 在 Apigee 后面部署您的功能。

    4. 在您的设计中实施智能以检测攻击并使用 Cloud Armor 等服务阻止访问。简单的逻辑将检测到大量有效负载,然后在防火墙中阻止有问题的 IP 地址。但是,这需要 #2。

    【讨论】:

    • 感谢您提供的所有信息。很高兴知道入站数据传输是免费的,我错过了。您或@DougStevenson 是否知道 Firebase 是否会检测并阻止尝试过多调用 FB 数据库或函数的恶意用户?还是只是扩展(取决于计划)并且负载平衡器、缓存和防火墙是防止此类攻击的唯一选择?
    • Cloud Armor 是否类似于 AWS Shield 并且可以与 Cloud Functions 和 Firebase 产品一起使用?
    • 是的,类似于 AWS Shield 和 WAF。 No 不能放在 Cloud Functions 前面。这就是为什么我提到第 2 项。不要公开您的端点。
    • @Dave - 您的第一条评论。攻击是如此普遍(我的意思是期待它们),以至于您需要设计要被攻击的系统,然后测试您是否可以处理攻击。每当我在云中启动一个新实例时,几分钟内就会发生攻击。有这么多“脚本小子”只是在访问 IP 地址。这意味着您需要(几乎总是)负载均衡器和防火墙来转移和管理攻击。例如,我的个人网站涉及安全主题,仅通过登录尝试就每小时被点击数百次。重要的一点是你无法阻止攻击。
    • 是的,Firebase 和 Cloud Functions 将扩展。一些攻击甚至可能使云资源过载 - 服务确实需要时间来扩展。
    猜你喜欢
    • 2014-08-13
    • 2012-02-21
    • 2015-01-08
    • 1970-01-01
    • 2011-01-25
    • 2011-07-21
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多