Cloud Functions、Cloud Firestore、Cloud Storage:如何防范机器人?

Posted

技术标签:

【中文标题】Cloud Functions、Cloud Firestore、Cloud Storage:如何防范机器人?【英文标题】:Cloud Functions, Cloud Firestore, Cloud Storage: How to protect against bots? 【发布时间】:2020-05-18 11:27:11 【问题描述】:

我已经在客户端将 ReCAPTCHA 用于 android 应用程序(当然,我还实现了它的服务器端验证)。

但是,此 ReCAPTCHA 仅在一项活动中实施。但是,当然,黑客可以修改应用程序。例如:

他们可以简单地从所有活动中删除 ReCAPTCHA,

或启动另一个不会实施 ReCAPTCHA 的活动;顺便说一句:我没有在每个活动中实现 ReCAPTCHA,因为根据我刚刚提到的第一个问题,它是无用的。

所以我想在 Cloud Functions、Cloud Firestore 和 Cloud Storage 中检测机器人和垃圾邮件请求,用于以下访问:读取、写入、函数调用。它可以让我防止不需要的内容被保存在 Firestore 中,例如(垃圾邮件等),并避免超出我的每月计费配额(例如,因为对 Firestore 的垃圾邮件请求)。

有可能吗?怎么样?

【问题讨论】:

【参考方案1】:

这些产品没有“垃圾邮件检测”功能。您的安全规则将决定谁可以访问哪些数据。如果您没有制定安全规则并允许公共访问,那么任何人都可以获取该数据,并且在发生这种情况时您将为此付费。这就是可公开访问的云服务的本质。

如果您想更好地控制这些产品中的数据,您可以使用安全规则阻止所有直接公共访问,并强制客户端通过您控制的后端。后端可以根据您确定的任何标准尝试应用一些逻辑来确定它是否是“垃圾邮件”。对此没有简单的算法 - 您需要定义“垃圾邮件”的含义,如果符合您的条件则拒绝该请求。

Google 确实为其云产品提供了一定数量的滥用检测功能,但可能需要大量滥用行为才能触发警报。如果您怀疑存在虐待行为,请务必收集信息并将其发送至Firebase support 寻求帮助。

【讨论】:

是的,我已经使用了安全规则,但您的其余信息非常有用。再次感谢道格!我已经投票并检查了你的答案。【参考方案2】:

只是想补充一点,还有另一种方法可以限制对 Cloud Functions 的访问。

Doug 已经描述了方式 1,您可以在云函数中编写访问逻辑。在这种情况下,该函数仍会被调用,但采用哪个代码路径取决于您的逻辑。

方式 2 是您可以将函数设置为“私有”,以便它不能被注册用户调用(您决定权限)。在这种情况下,未经身份验证的请求被拒绝,并且函数根本被调用。

方式 2 之所以有效,是因为每个 Firebase 项目也是一个 Google Cloud Platform 项目,而 GCP 提供了此功能。以下是对 (a) Configuring functions as public/private 和 (b) authenticating end-users to your functions 的相关引用。

【讨论】:

以上是关于Cloud Functions、Cloud Firestore、Cloud Storage:如何防范机器人?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Google Python Client for Cloud Functions 获取 Google Cloud Functions 列表?

Cloud Functions、Cloud Firestore、Cloud Storage:如何防范机器人?

Cloud Tasks + Cloud Functions - 重复执行

在 Cloud Functions 中使用 Cloud Firestore 数据

使用 Cloud Scheduler 触发 Cloud Functions 的 HTTP

Firebase Cloud Functions 如何确认 Cloud pub/sub