首页 文章

主要使用JWT的无状态身份验证是否真的安全?

提问于
浏览
1

我很久没有这个问题,JWT真的很安全吗?因为对索赔和有效负载进行编码,我们可以很容易地解码令牌,这个解码也很好地在网站上给出了 . 所以我的观点是任何人都可以使用像burpsuite或任何东西这样的工具简单地更改auth标头,并给出一些其他有效的令牌并验证假用户 . 按照许多人的建议将令牌存储在localStorage中也可能不太安全 . 所以我的问题是,与加密的cookie或会话相比,它是否真的安全?无状态身份验证的好处是什么?我读了很多JWT对单页应用程序有用的文章 . 这是真的吗?

1 回答

  • 2

    访问令牌通常在呼叫者提供其硬凭证(例如用户名和密码)后发出 . 要访问受保护资源,调用者应将访问令牌发送到服务器以对每个请求执行身份验证 .


    在Web应用程序中,不应存储在本地存储中的JavaScript访问访问令牌 . 相反,应该通过HTTPS连接发送访问令牌,并将其存储在设置了SecureHttpOnly标志的cookie中:

    4.1.2.5 . 安全属性安全属性将cookie的范围限制为“安全”通道(其中“安全”由用户代理定义) . 当cookie具有Secure属性时,仅当请求通过安全通道(通常是HTTP over Transport Layer Security(TLS))传输时,用户代理才会在HTTP请求中包含cookie . [...]

    4.1.2.6 . HttpOnly属性HttpOnly属性将cookie的范围限制为HTTP请求 . 特别是,该属性指示用户代理在通过“非HTTP”API(例如将cookie暴露给脚本的Web浏览器API)提供对cookie的访问时省略cookie . [...]


    在JWT中,有效负载是编码为Base64的JSON字符串 . 因此它不适合存储密码等敏感细节 .

    签名令牌允许服务器执行无状态身份验证,即通过仅检查访问令牌内容来告知用户是谁 . 服务器不依赖于外部服务来验证用户 .

    JWT令牌应使用强加密密钥(必须在服务器上保持安全)进行签名,并且必须在信任令牌之前检查签名 .

相关问题