【发布时间】:2016-04-21 10:24:15
【问题描述】:
为了使用 JWT 保护 REST API,根据一些资料(例如 guide 和 question),JWT 可以存储在 localStorage 或 Cookies 中。根据我的理解:
- localStorage 受到 XSS 攻击,一般不建议在其中存储任何敏感信息。
- 通过 Cookies,我们可以应用标志“httpOnly”来降低 XSS 的风险。但是,如果我们要在后端从 Cookie 中读取 JWT,我们就会受到 CSRF 的影响。
所以基于上述前提——我们最好将 JWT 存储在 Cookies 中。在对服务器的每个请求中,都会从 Cookie 中读取 JWT,并使用 Bearer 方案将其添加到 Authorization 标头中。然后,服务器可以验证请求标头中的 JWT(而不是从 cookie 中读取它)。
我的理解正确吗?如果是这样,上述方法是否有任何安全问题?或者实际上我们可以一开始就使用 localStorage?
【问题讨论】:
-
@lrn2prgrm 不应同时使用(无状态)JWT 和(有状态)会话语义。
-
@corlaez 我正在使用 JWT,我计划在服务器端使用身份验证标头“Bearer mytoken”来验证我的 jwt。我的困惑是:如果我在第一次登录时使用 httpOnly 标志在 cookie 中发送原始 jwt(从服务器发送到浏览器),我如何从客户端提取 jwt 以放入我的 Authentication 标头以进行后续请求?难道 httpOnly 标志不允许我从客户端的 cookie 中提取信息吗?
标签: security cookies local-storage jwt restful-authentication