我有一个移动应用程序,用户在其中投放广告,其他用户查看并接受它。最近,我开始注意到机器人开始发布自己的广告。我有版主,但广告太多,无法检查所有内容(另一个挑战是,讨价还价会立即实时发生)。它是经典的 REST API。我用谷歌搜索了很多,令我惊讶的是找不到任何可以防止非法机器人活动的开源解决方案。您如何处理此类案件?是否有可能完全消除它,或者我只能采取一些措施让他们的生活更加困难?
2 回答
停止机器人是我们已经在处理的很多事情。一种常见的机制是使用验证码机制(例如 Googles recaptcha)。请谷歌它。
开源机器人检测
我用谷歌搜索了很多,令我惊讶的是找不到任何可以防止非法机器人活动的开源解决方案。
如果您在 Github 上搜索,bot detection
您将登陆此页面https://github.com/topics/bot-detection?q=bot+detection&unscoped_q=bot+detection,此时包含 7 个不太相关的结果,但是,如果您删除查询字符串并使用https://github.com/topics/bot-detection,您将获得 36 个结果,其中一些结果可能与您的后端语言相关。您还可以使用术语browser detection
、crawler detection
、device detection
等进行搜索。
其中一些 repos 依赖user-agent
IP 地址中的和/或来检测机器人,这种方法很容易被绕过,因为user-agent
标头很容易被欺骗,现在攻击者正在使用机器人农场来旋转 ips,从而使其非常很难阻止他们。
但是您应该使用其中一个存储库吗?为什么不呢,这是多一层的防御,至少您可以阻止不从机器人农场运行的不太复杂的机器人。
访问 API 服务器的 WHO 和 WHAT 之间的区别
最近,我开始注意到机器人开始发布自己的广告。
在我们深入探讨如何解决问题之前,我想首先澄清一个在任何资历级别的开发人员中常见的误解,即访问API 服务器的对象与访问对象之间的区别。
我建议您阅读文章为什么您的移动应用程序需要 Api 密钥?我在这里详细介绍了访问您的 API 服务器的对象和对象之间的区别,但为了您的方便,我将在这里提取主要内容:
向 API 服务器发出请求的内容是什么。它真的是您的移动应用程序的真实实例,还是机器人、自动脚本或攻击者使用 Postman 之类的工具手动绕过您的 API 服务器?
谁是移动应用程序的用户,我们可以通过多种方式进行身份验证、授权和识别,例如使用 OpenID Connect 或 OAUTH2 流。
因此,我希望您将谁视为您的 API 服务器将能够对数据进行身份验证和授权访问的用户,并考虑作为代表用户发出该请求的软件的内容,在您的情况下是机器人。
API 服务器防御
您如何处理此类案件?是否有可能完全消除它,或者我只能采取一些措施让他们的生活更加困难?
您可以通过深入应用防御,通过添加尽可能多的防御层来使攻击者的生活更加艰难,这是法律对您的用例的要求。
WAF - Web 应用程序防火墙:
Web 应用程序防火墙(或 WAF)过滤、监控和阻止进出 Web 应用程序的 HTTP 流量。WAF 与常规防火墙的区别在于,WAF 能够过滤特定 Web 应用程序的内容,而常规防火墙充当服务器之间的安全门。通过检查 HTTP 流量,它可以防止源自 Web 应用程序安全漏洞的攻击,例如 SQL 注入、跨站点脚本 (XSS)、文件包含和安全配置错误。
针对 API 的有效性很弱,因为它是专门为不依赖 API 但仍能够提供一定程度保护的 Web 应用程序设计的。
UBA - 用户行为分析:
Gartner 定义的用户行为分析 (UBA) 是一个关于检测内部威胁、有针对性的攻击和金融欺诈的网络安全流程。UBA 解决方案着眼于人类行为模式,然后应用算法和统计分析从这些模式中检测出有意义的异常——表明潜在威胁的异常。UBA 不是跟踪设备或安全事件,而是跟踪系统的用户。Apache Hadoop 等大数据平台正在增加 UBA 功能,允许它们分析 PB 级的数据以检测内部威胁和高级持续性威胁。
UBA 解决方案的一个很好的例子是 Google 的 Recaptcha,特别是reCAPTCHA V3:
reCAPTCHA 是一项免费服务,可保护您的网站免受垃圾邮件和滥用。reCAPTCHA 使用高级风险分析引擎和自适应挑战来防止自动化软件参与您网站上的滥用活动。它在让您的有效用户轻松通过的同时做到这一点。
...帮助您检测网站上的滥用流量,而不会产生任何用户摩擦。它会根据与您的网站的交互返回一个分数,并为您提供更多的灵活性来采取适当的行动。
当您在移动应用程序中使用 recaptcha V3 时,您的 API 服务器可以验证该请求的分数,但请记住,它只会使其更难绕过,因为如果您在 Google 上搜索bypass recaptcha V3,您会看到很多解决方案作为攻击者的服务提供。
将 API 服务器锁定到移动应用程序
API 服务器有可能高度确信请求确实来自您的移动应用程序,而不是使用移动应用程序证明概念的机器人,我邀请您阅读我对如何保护问题的回复移动应用程序的 API REST?,特别是“可能更好的解决方案”部分。
你想加倍努力吗?
在回答安全问题时,我总是喜欢参考 OWASP 基金会的出色工作。
对于移动应用
OWASP 移动安全项目是一个集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制以减少其影响或被利用的可能性。
移动安全测试指南 (MSTG) 是移动应用安全开发、测试和逆向工程的综合手册。
对于 APIS
OWASP API 安全项目旨在通过强调不安全 API 中的潜在风险并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了促进实现这一目标,OWASP API 安全项目将创建和维护一个 Top 10 API 安全风险文档,以及一个文档门户,用于在创建或评估 API 时提供最佳实践。