使用jwt进行身份验证时如何在客户端使用httpOnly?
Posted
技术标签:
【中文标题】使用jwt进行身份验证时如何在客户端使用httpOnly?【英文标题】:How to use httpOnly on the client side when using jwt for authentication? 【发布时间】:2022-01-01 10:58:54 【问题描述】:我了解在使用 express 和 jwt 时如何在服务器端将 cookie 设置为 httpOnly。
res.cookie("jwt", accessToken, secure: true, httpOnly: true )
但是,我们如何利用客户端的 httpOnly 来确保身份验证过程的安全并防止 cookie 被劫持?可以举个例子解释一下吗?
我还试图了解在 httpOnly 为 false 时访问 cookie 和在 httpOnly 为 true 时访问另一个 cookie 之间的区别。我知道后者将返回空字符串,但是当使用 jwt 进行身份验证时,我们在客户端哪里使用它。我们是否应该只发送一个 ajax 调用而不去操心其他任何事情?
【问题讨论】:
您不需要在客户端上使用 cookie 做任何事情,它应该随着每个请求自动发送。还要考虑不使用 JWT,会话通常更容易、更安全。 【参考方案1】:您不应将 JWT 令牌直接存储在 cookie 中,因为在浏览器中查看 cookie 的任何人都可以窃取 cookie。如果您想将 cookie 存储在 cookie 中,则应使用强加密对其进行加密。
HttpOnly 将阻止 javascript 访问 cookie,最好始终设置所有重要的 cookie。此外,您应该将安全属性添加到所有 cookie。还请考虑设置 SameSite 属性以使其更加安全。
【讨论】:
以上是关于使用jwt进行身份验证时如何在客户端使用httpOnly?的主要内容,如果未能解决你的问题,请参考以下文章