我正在为蛮力登录尝试编写一个简单的解决方案。如果有很多失败的尝试,我需要在发送响应之前添加延迟。你们建议为个人请求增加延迟是什么?它必须是每个请求,以便为特定资源提供服务的线程不应该受到下一个请求的影响。
谢谢。
编辑:根据this question when running on Apache on Webfaction time.sleep 将延迟对同一资源的下一个请求。
那么在这种情况下,什么可以替代 time.sleep 呢?
我正在为蛮力登录尝试编写一个简单的解决方案。如果有很多失败的尝试,我需要在发送响应之前添加延迟。你们建议为个人请求增加延迟是什么?它必须是每个请求,以便为特定资源提供服务的线程不应该受到下一个请求的影响。
谢谢。
编辑:根据this question when running on Apache on Webfaction time.sleep 将延迟对同一资源的下一个请求。
那么在这种情况下,什么可以替代 time.sleep 呢?
如果您在线程服务器中延迟响应,您的服务将容易受到 DOS 攻击。攻击者可能一次发送可能的请求,并且您的所有线程将立即休眠...
如果来自同一 IP 的尝试次数过多,您最好询问 CAPTCHA。
Upd:我会使用 Twisted(或 Tornado,但我从未使用过)和 nginx(不是 Apache)作为前端。您甚至可以同时使用 Twisted 和 Django,但是您必须编写模仿 Django 身份验证和会话与 Twisted 的代码,将适当的数据写入数据库。
如果我错了,请投反对票,但我认为每个线程一次只处理一个请求。因此,如果您想要一个缓慢的请求,只需time.sleep
在该线程中执行一个,服务器将花费更长的时间来处理它,而不会影响其他并发请求。
Http 是一种无状态协议。连接请求的唯一方法是将会话信息存储在客户端的某处。由于您无法控制客户端行为,因此最好的机会是在服务器端记录失败的登录尝试并延迟这些帐户的登录例程。