【问题标题】:What is different between "DRF Throttling" and "Django Axes"“DRF 节流”和“Django Axes”有什么不同
【发布时间】:2018-09-28 13:54:16
【问题描述】:

“Django-Rest-Framework (DRF) Throttling”可以帮助防止暴力攻击和失败的登录尝试。

那我们为什么要使用“Django axes”、“Django defender”、“django-ratelimit”之类的组件呢?

提前致谢

【问题讨论】:

  • 您的问题是否得到了满意的答案?下面我的回答对你有帮助吗?

标签: python django django-rest-framework


【解决方案1】:

DRF 提供的限制与身份验证有很大不同,身份验证是 Django Axes 的重点。

在 DRF 中,您可以允许在给定时间段(比如说一天)内以定义的次数(即 100 次数据库查找)访问您的资源(例如数据库),因此它们被限制在该数量/时间段内,这里100/天。在某些用例中,用户甚至不需要标识自己就可以使用您的服务,不涉及身份验证 - 这里您将用户系统的 IP 视为限制用户活动的关键。是的,您可以在 DRF 中结合身份验证运行节流,但其中一个不需要另一个。

而在 Axes 中,您主要关心的是让用户通过登录过程证明他的身份(身份验证)。您还可以指示 Axes 拒绝重复失败的用户进行身份验证的机会,即如果您在 10 次尝试中未能正确登录,您现在将在接下来的 5 分钟内被禁止登录。因此,通常未经身份验证的用户将永远无法使用您的服务,并且重复的身份验证失败尝试将导致该 IP 在很长一段时间内被拒绝进行身份验证的机会。 Axes 的重点往往是确定用户未能通过身份验证的原因以及他们通过何种方式获得了对系统的访问权限。例如,从 Axes 报告中,您可以使用从注册页面通过电子邮件发送给他们的链接来确定当天有多少用户登录。或者哪些用户使用 facebook 登录,以及有多少用户登录失败(例如 IP、用户名或电子邮件)。

此外,DRF 实际上是“常规 django”的附加组件,因此它的节流和身份验证是针对它执行的 API 服务量身定制的。您使用 API 的用户通常不太可能手动向 API 进行身份验证,而是使用一些令牌 (JWT,csrf) 。 Django Axes 也是常规 django 的附加组件,通常通过验证用户来满足典型网站的需求。您可以在一个 django 平台上同时使用 DRF 和 Axes 这两种服务,它们可以很好地协同工作并且不会发生冲突。

【讨论】:

    【解决方案2】:

    据我所知,您提到的那些库都做同样的事情(它们之间有一些区别)。您可以选择最适合您的需求。

    如果您使用的是 DRF,则不需要额外的库(axes、ratelimit 等),因为 DRF 已经内置了节流功能。

    【讨论】:

      猜你喜欢
      • 2023-02-07
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 2014-11-03
      • 2021-06-02
      • 2018-10-10
      相关资源
      最近更新 更多