firebase - Cloud Functions、Cloud Firestore、Cloud Storage:如何防范机器人?
问题描述
我已经将 ReCAPTCHA 用于 Android 应用程序客户端(当然,我还实现了它的服务器端验证)。
但是,此 ReCAPTCHA 仅在一项活动中实施。但是,当然,黑客可以修改应用程序。例如:
他们可以简单地从所有活动中删除 ReCAPTCHA,
或启动另一个不会实施 ReCAPTCHA 的活动;顺便说一句:我没有在每个活动中实现 ReCAPTCHA,因为根据我刚刚提到的第一个问题,它是无用的。
因此,我想在 Cloud Functions 中检测机器人和垃圾邮件请求,然后在 Cloud Firestore 中,然后在 Cloud Storage 中检测以下访问:读取、写入、函数调用。它可以让我防止不需要的内容被保存在 Firestore 中,例如(垃圾邮件等),并避免超出我的每月计费配额(例如,因为对 Firestore 的垃圾邮件请求)。
是否可以?如何?
解决方案
这些产品没有“垃圾邮件检测”。您的安全规则将决定谁可以访问哪些数据。如果您没有适当的安全规则并允许公共访问,那么任何人都可以获取该数据,并且在发生这种情况时您将为此付费。这是可公开访问的云服务的本质。
如果您想更好地控制这些产品中的数据,您可以使用安全规则阻止所有直接公共访问,并强制客户端通过您控制的后端。后端可以根据您确定的任何标准尝试应用一些逻辑来确定它是否是“垃圾邮件”。对此没有简单的算法 - 您需要定义“垃圾邮件”的含义,并在符合您的标准时拒绝该请求。
谷歌的云产品确实有一些滥用检测功能,但可能需要大量滥用才能触发警报。如果您怀疑存在滥用行为,请务必收集信息并将其发送给Firebase 支持以寻求帮助。
推荐阅读
- graphql - 来自 shopify 的 Gatsby graphQL 没有返回对象
- tensorflow - 为什么 resnet50 的 MaxPool2d 层在 tensorboard 中可视化时会输出 2 个张量?
- input - 我在这段代码中遗漏了什么,它看起来不错并且格式正确吗?
- python - 我不知道为什么python无法检测到pynput
- tensorflow - 如何使用 LSTM 屏蔽多变量时间序列分类中的填充值
- flutter - 如何在颤动中使用我当前的位置作为我的标记和折线原始纬度和经度
- r - RStudio 中的对话框字体太小
- pandas - 计算 Pandas 范围内值的出现次数
- sfml - SFML sf::Shape::getLocalBounds() 和 sf::Shape::getGlobalBounds() 的区别?
- typescript - 如何创建一个基本枚举,从中我可以在 Typescript 中派生几个子枚举?