【发布时间】:2015-01-19 22:43:08
【问题描述】:
我知道基于 cookie 的身份验证。 SSL 和 HttpOnly 标志可用于保护基于 cookie 的身份验证免受 MITM 和 XSS 的影响。但是,需要采取更多特殊措施来保护它免受 CSRF 的影响。它们只是有点复杂。 (reference)
最近,我发现 JSON Web Token (JWT) 作为身份验证的解决方案非常热门。我知道有关编码、解码和验证 JWT 的知识。但是,我不明白为什么有些网站/教程告诉如果使用 JWT 就不需要 CSRF 保护。我已经阅读了很多,并试图总结以下问题。我只是希望有人提供 JWT 的更大图景,并澄清我对 JWT 的误解。
-
如果JWT存储在cookie中,我认为它与基于cookie的身份验证相同,只是服务器不需要会话来验证cookie/token。如果不采取特殊措施,仍然存在 CSRF 风险。 JWT 不是存储在 cookie 中的吗?
-
如果 JWT 存储在 localStorage/sessionStorage 中,则不涉及 cookie,因此无需防范 CSRF。问题是如何将 JWT 发送到服务器。我发现here 建议使用jQuery 通过ajax 请求的HTTP 标头发送JWT。那么,只有ajax请求才能进行认证吗?
-
另外,我发现了另外一个blog,它指向使用“Authorization header”和“Bearer”来发送 JWT。我不明白博客所说的方法。有人可以解释更多关于“授权标头”和“承载”的信息吗?这是否使所有请求的 HTTP 标头传输的 JWT?如果是,那么 CSRF 呢?
【问题讨论】:
标签: security authentication cookies csrf jwt