我正在运行flask/memcached,正在寻找一种精简/高效的方法来防止自动化脚本用请求和/或提交新帖子太快地猛烈抨击我。
我曾想过在会话cookie中包含一个“last_action”时间,并根据每个请求检查它,但无论我设置什么时间,脚本都可以设置为延迟这么长时间。
我也想过抓取IP,如果在x个时间内有太多的请求来自它,那么拒绝这么长时间,但这将需要像redis这样的东西高效运行,我希望避免不得不支付费用。
我更喜欢基于cookie的解决方案,除非像redis这样的东西能证明它的价值。
处理这类情况的“行业标准”是什么?成本/性能权衡最少的方法是什么?
发布于 2012-10-10 02:26:20
没有办法通过cookie实现这一点,因为恶意脚本可以悄悄地丢弃您的cookie。由于您必须支持用户首次访问的情况(即未设置任何cookie),因此无法通过仅考虑客户端上存储的状态来区分真正的新用户和恶意脚本。
您将需要在服务器端跟踪您的用户以实现您的目标。这可以像基于IP的过滤器一样简单,它可以防止同一IP的快速发布。
发布于 2012-10-10 02:45:42
你应该坐下来决定在你的应用场景中你的“核心”问题到底是什么,以及谁将是你的潜在用户。这将帮助您指导正确的解决方案。
根据我的经验,在这个主题中有很多不同的问题和解决方案-没有一个是“一刀切”的
我可以聊上一整天。在我看来,你必须首先解决业务逻辑和ux概念-然后技术解决方案要容易得多。
发布于 2012-12-22 22:14:10
我以前使用过的一个非常简单的方法是在注册表单中添加一个使用CSS隐藏的输入(即显示:无)。大多数表单机器人会填写这个字段,而人类不会(因为它是不可见的)。在您的服务器端代码中,您可以拒绝任何填充了输入的POST。
https://stackoverflow.com/questions/12805732
复制相似问题