当前位置: 首页 > 知识库问答 >
问题:

JWT (JSON Web Token)交叉用户/应用程序使用风险

施学
2023-03-14

我已经为其中一个 API 使用要求实施了基于 JWT 的身份验证系统。这意味着,如果用户想要访问任何 REST API,则将使用 JWT 令牌进行通信 API。这是步骤应遵循的方式:

  1. 用户将调用 /Authenticate 方法传递用户名/密码。
  2. 系统将验证用户并在响应中返回 JWT 令牌和超时。
  3. 现在,用户将在请求标头中调用 /Employee/Get API 方法以及 JWT 令牌。 例如授权:持有者{令牌}
  4. 事情进展顺利。

现在的问题是,一旦生成令牌,任何用户都可以通过捕获网络请求/通过任何可以在网络系统中读取请求/响应的工具来获取令牌。

这意味着,如果我为用户 Mark 生成了 JWT 令牌,那么通过抓取相同的 toke,其他用户可以在标头中传递相同的令牌,并且可以访问我的 /Employee/Get API 方法。

现在,令牌将被验证,因为它是从同一系统生成的,并且系统不知道用户,它只知道 JWT 令牌。

我如何确保其他用户不能使用同一令牌,或者即使他们传递了相同的令牌,我的系统也应该拒绝该请求。我如何确保它的安全?

提前谢谢!

共有1个答案

谷梁镜
2023-03-14

拥有JWT是身份验证证明。如果令牌被盗,那么攻击者可以冒充用户。所以你需要保护它:

>

  • 主要使用HTTPS加密通信通道

    将其安全地存储在客户端上。例如,看这里JWT应该存储在local存储还是cookie中?

  •  类似资料:
    • 我正在为我的flutter应用程序使用JWT进行身份验证。我可以成功地登录和注销,但问题是令牌何时过期。我是否应该将用户的用户名/密码存储在安全存储中,然后获取新的令牌?

    • 问题内容: 基本上,我在Linux上进行开发时,尝试将最简单的代码编译到Windows。 我通过搜索互联网找到了这些命令: 可悲的是,它们都不起作用。它给我关于标准箱丢失的错误 有没有办法在Windows上运行的Linux上编译代码? 问题答案: Rust发行版仅提供主机系统的编译库。但是,根据Rust上Arch Linux的Wiki页面 ,您可以从系统目录中适当位置(位于或中,具体取决于Wind

    • 在Spark bin目录下的spark-submit可以用来在集群上启动应用程序。它可以通过统一的接口使用Spark支持的所有集群管理器 ,所有你不必为每一个管理器做相应的配置。 用spark-submit启动应用程序 bin/spark-submit脚本负责建立包含Spark以及其依赖的类路径(classpath),它支持不同的集群管理器以及Spark支持的加载模式。 ./bin/spark-s

    • 我正在尝试使用apache.commons.net.telnet为思科交换机(2960)编写一个Android应用程序作为telnet客户端。但我的联系有问题。在android模拟器上没有显示输出,但ConnectBot运行在同一模拟器上,并且可以完美地telnet到交换机。下面是代码示例: mainactivity.java activity_main.xml 我对Android开发(Eclip

    • 本文向大家介绍SQL 交叉应用和外部应用基础,包括了SQL 交叉应用和外部应用基础的使用技巧和注意事项,需要的朋友参考一下 示例 在正确的表达式中使用表值函数时,将使用Apply。 创建一个Department表来保存有关部门的信息。然后创建一个Employee表,其中包含有关雇员的信息。请注意,每个员工都属于一个部门,因此Employee表与Department表具有参照完整性。 第一个查询从D

    • 问题内容: 是否有用于从Linux到Windows交叉编译C ++应用程序的手册? 只是。我想要一些信息(链接,参考,示例…)来指导我做到这一点。 我什至不知道是否可能。 我的目标是在Linux上编译程序并获取一个可以在Windows下运行的.exe文件。 问题答案: 基础不太难: 替换为,或您的Linux发行版使用的任何格式。这将为Windows 生成一个。 一旦解决了这个问题,就可以使用aut