【问题标题】:REST security, is a bad practice to use basic auth plus jwt token verification?REST 安全性,使用基本身份验证和 jwt 令牌验证是一种不好的做法吗?
【发布时间】:2020-10-21 03:40:34
【问题描述】:

我正在制作一个安全的休息服务,并且我已经使用基本身份验证加上之前获得的 jwt 令牌对其进行了保护,我是否让安全性太强或者这是一个必须遵循的路径?

【问题讨论】:

  • 你是什么意思你同时使用?基本身份验证使用 Authorization: Basic <payload> 标头对您发出的每个请求进行身份验证。完成此操作后,您再次进行身份验证并生成 JWT 令牌?还是基于基本身份验证生成的令牌?你把它放在哪里?进入Authorization: Bearer <payload>。你有两个标题吗?

标签: rest security jwt basic-authentication


【解决方案1】:

同时使用 HTTP Basic auth 和 JWT 令牌不会使应用程序更安全,它实际上会降低安全性,并且处理起来更复杂。

HTTP 基本身份验证由用户代理(通常是浏览器)完成。它将Authorization: Basic <payload> 标头永久添加到每个请求中。您无法注销。除非您关闭代理,否则它将在那里。唯一的好处是可以使此身份验证无效。而且我们通常不会将这种身份验证用于人类,但仅用于微服务,因为浏览器中的处理很差(忘记关闭选项卡并注销,如果有人可以物理访问您的计算机,您就完成了)。

JWT 好一点。它可以过期。但不能失效(至少不设置额外的基础设施)。

现在你得到的是两个世界中最糟糕的。您无法注销。如果您的 JWT 令牌过期,它将重新生成,因为您仍然拥有基本身份验证。如果您使基本身份验证无效,您可能(可能需要检查它以 100% 确定)仍然使用 JWT 令牌访问应用程序,直到它过期。

不要相信我的话。只需检查 JWT 令牌过期后您是否仍然可以访问应用程序以及 JWT 令牌会发生什么。

我曾经使用 JSESSIONID 进行基本身份验证和正常身份验证。混合也不起作用。

【讨论】:

  • 如果 jwt 不仅由用户凭据生成,而且由 id 和凭据生成,那么使用这两种安全方式仍然太糟糕了?
  • id是怎么传的?是用户提供的东西吗?它是从数据库中自动获取的吗?
  • 它在获取请求的 URL 中作为值传递
  • 恕我直言,这并没有太大变化。攻击者可以像普通用户一样使用这个 id 字段。
猜你喜欢
  • 2016-03-26
  • 2021-01-25
  • 2016-03-24
  • 2019-01-05
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多