将访问令牌映射到客户端 IP

时间:2021-02-13 08:02:40

标签: reactjs django authentication ip-address django-rest-knox

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

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

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

我的问题

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

  2. 您对几乎所有后端框架以及 django 都使用“HTTP_X_FORWARDED_FOR”元。你可以检查这个链接。 How do I get user IP address in django?

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

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

相关问题