Spring 安全 - 被盗的 JWT 令牌
Spring Security - Stolen JWT token
使用 Spring 安全性 和 JWT:
- 如果来自不同的令牌,是否有办法使令牌无效
设备?
- 我怎么知道提供的令牌是否是被盗的
?我可以轻松复制并粘贴整个令牌并提供它
谢谢
我将尽可能简单地回答这个问题,而不会试图进行全面的讨论。
Is there a way to invalidate the token if it's from a different device?
没有。这是您不应该将 JWT 用作会话的主要原因之一。它们被发布,然后最常见的是通过检查签名来验证它们的完整性,然后仅此而已。
会话 cookie 存储了所有信息 server-side,这意味着您可以在服务器端使会话无效,并且当有人出示 cookie 时您可以拒绝。
令牌具有您可以检查的生命周期,但由于大多数实现都是无状态的,我们无法使服务器端失效,因此我们无法使 JWT 失效。它必须“超时”。
可能有自定义解决方案等,但所有主要实现都是这样工作的。 Owasp 谈论不同的解决方案 built in token revocation
这个问题已经提过好几次了,但是开发者似乎并不在意。
JWTs are dangerous for user sessions
Stop using JWT for sessions part 2
Why JWTs suck as session tokens
How am I supposed to know whether the token provided is a stolen one ? I can easily copy and paste the entire token and provide it
你不能。你怎么知道有人盗用了你的 Facebook 帐户?好吧,您向 Facebook 报告它已被黑客入侵。单凭代币是无法随时知道谁拥有任何代币的。
这就是为什么我们有证书 (TLS),我们有其他安全措施,如 CORS、CSRF、ip 白名单、用户名和密码等。
这就是所谓的零信任 如果有人出示令牌,您就相信他们就是他们声称的那个人,除非您想开始加入白名单IP-address (但它们可以被 vpns 等欺骗)
安全很困难,遗憾的是您现在已经了解了它的困难。
令牌窃取是一回事,您必须专注于确保没有人可以窃取令牌。
使用 Spring 安全性 和 JWT:
- 如果来自不同的令牌,是否有办法使令牌无效 设备?
- 我怎么知道提供的令牌是否是被盗的 ?我可以轻松复制并粘贴整个令牌并提供它
谢谢
我将尽可能简单地回答这个问题,而不会试图进行全面的讨论。
Is there a way to invalidate the token if it's from a different device?
没有。这是您不应该将 JWT 用作会话的主要原因之一。它们被发布,然后最常见的是通过检查签名来验证它们的完整性,然后仅此而已。
会话 cookie 存储了所有信息 server-side,这意味着您可以在服务器端使会话无效,并且当有人出示 cookie 时您可以拒绝。
令牌具有您可以检查的生命周期,但由于大多数实现都是无状态的,我们无法使服务器端失效,因此我们无法使 JWT 失效。它必须“超时”。
可能有自定义解决方案等,但所有主要实现都是这样工作的。 Owasp 谈论不同的解决方案 built in token revocation
这个问题已经提过好几次了,但是开发者似乎并不在意。
JWTs are dangerous for user sessions
Stop using JWT for sessions part 2
Why JWTs suck as session tokens
How am I supposed to know whether the token provided is a stolen one ? I can easily copy and paste the entire token and provide it
你不能。你怎么知道有人盗用了你的 Facebook 帐户?好吧,您向 Facebook 报告它已被黑客入侵。单凭代币是无法随时知道谁拥有任何代币的。
这就是为什么我们有证书 (TLS),我们有其他安全措施,如 CORS、CSRF、ip 白名单、用户名和密码等。
这就是所谓的零信任 如果有人出示令牌,您就相信他们就是他们声称的那个人,除非您想开始加入白名单IP-address (但它们可以被 vpns 等欺骗)
安全很困难,遗憾的是您现在已经了解了它的困难。
令牌窃取是一回事,您必须专注于确保没有人可以窃取令牌。