- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 JWT 为我的 RESTful API 实现无状态身份验证。
据我所知,JWT 基本上是在 REST 调用期间作为 HTTP header 传递的加密字符串。
但是如果窃听者看到请求并窃取 token 怎么办?那他就可以用我的身份伪造请求了?
实际上,这个问题适用于所有基于 token 的身份验证。
如何防止这种情况发生?像 HTTPS 这样的安全通道?
最佳答案
我是一个节点库的作者,该库可以相当深入地处理身份验证,express-stormpath ,所以我会在这里补充一些信息。
首先,JWT 通常不加密。虽然有一种方法可以加密 JWT(请参阅: JWEs ),但由于多种原因,这在实践中并不常见。
接下来,任何形式的身份验证(无论是否使用 JWT)都会受到 MitM 攻击(中间人)攻击。当攻击者可以在您通过互联网发出请求时查看您的网络流量时,就会发生这些攻击。这是您的 ISP、NSA 等可以看到的内容。
这就是 SSL 有助于防止的情况:通过加密来自计算机的网络流量 -> 在进行身份验证时使用某些服务器,监视您网络流量的第三方无法看到您的 token 、密码或类似内容,除非他们“以某种方式能够获得服务器的 SSL 私钥的副本(不太可能)。这就是所有形式的身份验证都必须使用 SSL 的原因。
但是,假设有人能够利用您的 SSL 并能够查看您的 token :您的问题的答案是是,攻击者将会能够使用该 token 来冒充您并向您的服务器发出请求。
现在,这就是协议(protocol)发挥作用的地方。
JWT 只是身份验证 token 的一种标准。它们几乎可以用于任何事情。 JWT 之所以很酷,是因为您可以在其中嵌入额外的信息,并且可以验证没有人弄乱它(签名)。
然而,JWT 本身与“安全”无关。出于所有意图和目的,JWT 或多或少与 API key 相同:只是用于针对某个服务器进行身份验证的随机字符串。
使您的问题更有趣的是所使用的协议(protocol)(最有可能是 OAuth2)。
OAuth2 的工作方式是,它旨在为客户端提供临时 token (如 JWT!),以便仅在短时间内进行身份验证!
这个想法是,如果您的 token 被盗,攻击者只能在短时间内使用它。
使用 OAuth2,您必须经常向服务器重新验证自己的身份,方法是提供您的用户名/密码或 API 凭据,然后获取 token 作为交换。
因为这个过程时不时地发生,所以你的 token 会经常发生变化,这使得攻击者更难不断地冒充你而不经历很大的麻烦。
希望这对您有帮助^^
关于authentication - 如果 JWT 被盗怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34259248/
我正在制作一个全栈网络应用程序。我的前端由 Angular-cli 组成,后端由 Node + Express 构建。 我设法使用 JWT token 进行身份验证(阅读:注册和登录)。此时此 tok
如果攻击者将放置在 SetAuthCookie 调用中的身份验证 cookie 从受害者 PC 复制到他们的 PC,是否会认为攻击者已通过 Web 应用程序的身份验证? public static v
This post指的是一种通过使用 TLS session ID 作为替代方法来避免 cookie 被盗的方法。 我如何在 ASP.NET 中访问 TLS session ID? 最佳答案 评论有点
我是一名优秀的程序员,十分优秀!