Cloud Functions、Cloud Firestore、Cloud Storage:如何防范机器人程序?
Cloud Functions, Cloud Firestore, Cloud Storage: How to protect against bots?
我已经将 ReCAPTCHA 用于 Android 应用客户端(当然,我也实现了它的服务器端验证)。
但是,此 ReCAPTCHA 仅在一个 activity 中实现。但是,当然,黑客可以修改应用程序。例如:
他们可以简单地从所有活动中删除 ReCAPTCHA,
或启动另一个不会实施 ReCAPTCHA 的 activity;顺便说一句:我没有在每个 activity 中实现 ReCAPTCHA,因为根据我刚才提到的第一个问题,它是无用的。
所以我想在 Cloud Functions 中检测 bot 和垃圾邮件请求,然后在 Cloud Firestore 中,然后在 Cloud Storage 中检测以下访问:读、写、函数调用.例如,它可以让我防止不需要的内容保存在 Firestore 中(垃圾邮件等),并避免超出我的每月账单配额(例如,因为对 Firestore 的垃圾邮件请求)。
可能吗?怎么样?
这些产品没有 "spam detection"。您的安全规则将决定谁可以访问哪些数据。如果您没有适当的安全规则,并允许 public 访问,那么任何人都可以获取该数据,并且当发生这种情况时您将为此付费。这就是 public 易于访问的云服务的本质。
如果您想更好地控制这些产品中的数据,您可以使用安全规则停止所有直接 public 访问,并强制客户端通过您控制的后端。后端可以尝试应用一些逻辑来根据您确定的任何标准来确定它是否 "spam"。对此没有简单的算法 - 您需要定义 "spam" 的含义,并在满足您的条件时拒绝请求。
Google 确实对其云产品进行了一定程度的滥用检测,但可能需要大量滥用才能触发警报。如果您怀疑存在滥用行为,请务必收集信息并将其发送至 Firebase support 寻求帮助。
只是想我要补充一点,还有另一种方法可以限制对 Cloud Functions 的访问。
Doug 已经描述了方法 1,您在云函数中编写访问逻辑。在这种情况下,该函数仍会被调用,但采用哪个代码路径取决于您的逻辑。
方法 2 是您可以将函数设置为 "private",这样它 不能 被注册用户调用(您决定权限)。在这种情况下,未经身份验证的请求将被拒绝,并且根本 不会 调用该函数。
方法 2 可行,因为每个 Firebase 项目也是一个 Google Cloud Platform 项目,而 GCP 提供此功能。这里是(a)Configuring functions as public/private, and then (b) authenticating end-users to your functions的相关参考。
我已经将 ReCAPTCHA 用于 Android 应用客户端(当然,我也实现了它的服务器端验证)。
但是,此 ReCAPTCHA 仅在一个 activity 中实现。但是,当然,黑客可以修改应用程序。例如:
他们可以简单地从所有活动中删除 ReCAPTCHA,
或启动另一个不会实施 ReCAPTCHA 的 activity;顺便说一句:我没有在每个 activity 中实现 ReCAPTCHA,因为根据我刚才提到的第一个问题,它是无用的。
所以我想在 Cloud Functions 中检测 bot 和垃圾邮件请求,然后在 Cloud Firestore 中,然后在 Cloud Storage 中检测以下访问:读、写、函数调用.例如,它可以让我防止不需要的内容保存在 Firestore 中(垃圾邮件等),并避免超出我的每月账单配额(例如,因为对 Firestore 的垃圾邮件请求)。
可能吗?怎么样?
这些产品没有 "spam detection"。您的安全规则将决定谁可以访问哪些数据。如果您没有适当的安全规则,并允许 public 访问,那么任何人都可以获取该数据,并且当发生这种情况时您将为此付费。这就是 public 易于访问的云服务的本质。
如果您想更好地控制这些产品中的数据,您可以使用安全规则停止所有直接 public 访问,并强制客户端通过您控制的后端。后端可以尝试应用一些逻辑来根据您确定的任何标准来确定它是否 "spam"。对此没有简单的算法 - 您需要定义 "spam" 的含义,并在满足您的条件时拒绝请求。
Google 确实对其云产品进行了一定程度的滥用检测,但可能需要大量滥用才能触发警报。如果您怀疑存在滥用行为,请务必收集信息并将其发送至 Firebase support 寻求帮助。
只是想我要补充一点,还有另一种方法可以限制对 Cloud Functions 的访问。
Doug 已经描述了方法 1,您在云函数中编写访问逻辑。在这种情况下,该函数仍会被调用,但采用哪个代码路径取决于您的逻辑。
方法 2 是您可以将函数设置为 "private",这样它 不能 被注册用户调用(您决定权限)。在这种情况下,未经身份验证的请求将被拒绝,并且根本 不会 调用该函数。
方法 2 可行,因为每个 Firebase 项目也是一个 Google Cloud Platform 项目,而 GCP 提供此功能。这里是(a)Configuring functions as public/private, and then (b) authenticating end-users to your functions的相关参考。