0

我的设置
我使用 React 和 Django 作为前端和后端。出于授权目的,我选择了 Django-rest-knox,它通过存储在数据库中的令牌工作。

我的问题
现在,如果攻击者获得了令牌(登录后存储在客户端的本地存储中),他可以做任何用户能够做的事情。令牌有一些到期时间,并且可以由用户自己销毁用户的所有令牌。但我想站在更安全的一边。

我的解决方案
我的想法是将所有令牌映射到用于登录的(用户的)IP 地址。这样,令牌只能在用于登录的机器上使用。将在后端检查令牌与 IP 地址的关系。

我的问题

  1. 这个想法是否可行,或者这些 IP 地址的性质是否有任何破坏我的意图?
  2. 获取客户端 IP 地址的最佳方法是什么?
  3. 您认为这是一种安全的方法吗?

谢谢您的帮助!

4

1 回答 1

1
  1. 这个想法可行但效率不高。主要问题是,不是每个人都使用静态 IP 地址,这会给您的用户带来很大的反馈,因为每次某些用户的 IP 地址更改(通过调制解调器重置、断电、提供商问题等)他/她/它都必须再次进行身份验证。

  2. 您对几乎所有后端框架以及 django 都使用“HTTP_X_FORWARDED_FOR”元数据。你可以检查这个链接。如何在 django 中获取用户 IP 地址?

  1. 这个想法可能带有安全性,但我会给你一个更好的,我目前在我自己的应用程序中使用。

我的解决方案:刷新令牌。使用刷新令牌,每次访问令牌过期(理想情况下平均 15 分钟)用户将通过他/她/它的刷新令牌请求新的访问令牌。通过这种方式,即使攻击者获得用户的访问令牌,他/她/它也只能使用 15 分钟(您也可以设置 5-10-15-... 分钟)

于 2021-02-13T08:39:56.610 回答