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