过去几天我一直在思考如何保护 Bots 使用的 Web 表单。使用是善意的滥用,大约 8 小时内大约 800k 机器人的查询。
让我们快速概述一下情况,任何缺失的信息 - 请询问。
机器人:
- 该机器人具有不同的 IP。
- 该机器人将其用户代理更改为真正存在的用户代理。
- bot是否加载js并有cookie的未知点。
问题:
- 该表单无法使用隐藏的令牌字段,因为它可能是从外部资源提交的。不同网站等资源,不了解 CSRF 令牌,无法生成它们。使得无法使用 CSRF。
- 该网站必须在浏览器中缓存,并且缓存可能仅在异常情况下重置,例如可疑行为。
- 不能大量使用数据库(!)。
现在的样子:
- 具有过期哈希的 Cookie 计数器 + 附加字符只有系统知道它们何时插入。
- 如果浏览器无法处理 cookie,则使用数据库日志记录。这是浏览器缓存的一些困难,当用户没有到达服务器时 - 结果:验证没有运行,计数器没有增加。
- reCaptcha 为在 X 时间内超过尝试次数限制的用户申请。
提出的想法:
- 为 iframe 提供一些内容并过期 0。 iframe 制作简单的 cookie 逻辑。
- iframe : 如果 cookie 没有设置 - 设置它,如果 cookie 被设置,验证。如果用户没有超过限制 - 设置计数器 +1,如果超过 - 发送到特定页面,这将显示缓存重置的警告。
这里的困难是,如果 bot 不支持 cookie 和从缓存中提供的内容怎么办......由于用户没有到达服务器,数据库不会写任何东西。但是,如果用户更改关键字,它将重置缓存并且后面的逻辑将起作用。
第二个难点:如果bot不支持JS怎么办(切换关键字会被淘汰)。但是,从缓存提供内容时无法重定向。
第三个难点:如果机器人破译了 ReCAPTCHA 怎么办?:)
*问题:*
在这种情况下你在做什么?请描述您正在考虑的步骤。非常感谢您对事物的看法。每个想法都可能与其他想法一起完善,我们可以提出一个很好的保护方案!谢谢你们!