NodeJS:在客户端存储JWT的位置?sessionStorage,localStorage还是cookies?

Ole*_*ann 8 authentication cookies node.js jwt angularjs

在使用NodeJS和(例如)AngularJS的SPA上存储JSON Web令牌以进行身份​​验证的最佳位置是什么?

到目前为止我得到了什么:

可能的地方:

  • HTML5 Web存储(localStorage/sessionStorage)
  • 饼干

Web存储(localStorage/sessionStorage)可通过同一域上的JavaScript访问.这意味着您站点上运行的任何JavaScript都可以访问Web存储,因此可能容易受到跨站点脚本(XSS)攻击.

localStorage具有不同的到期时间,sessionStorage只能在创建它的窗口打开时才能访问. localStorage持续到您删除它或用户删除它为止.

饼干,与仅Http cookie的标志一起使用时,不通过JavaScript访问,并且是免疫的XSS.但是,cookie很容易受到跨站点请求伪造(CSRF)的攻击.

那么存储JWT最安全的方式是什么

小智 -2

您可以将 JWT 存储在任何您想要的地方。如果你想保护它,你可以加密令牌并将其存储在 localstorage/cookies 中,并将密钥作为常量保存在你的 angularJs 应用程序中;该令牌将保持安全,并且只能从您的应用程序中解密。