有很多文章围绕讨论在客户端存储JWT的最佳位置。简而言之,他们都是关于 -
仅限Http的安全cookie - 没有XSS,但是对XSRF来说很脆弱
标题(保存在本地存储或DOM中) - 没有XSRF,但是对XSS很可疑
我认为我想出了一个非常精明的解决方案,但是,由于我在安全方面完成了noob,我不确定它是否真的很精明或愚蠢。
那么,如果要拆分JWT并将其中的一部分保存在cookie中,另一部分放在标题中呢?会不会破碎?
这也应该解决'退出'问题 - 删除标题部分会使浏览器无法登录。
最好的问候,尤金。
答案 0 :(得分:12)
JWT需要保持在一起,否则签名验证将无效。
保护XSRF非常简单,只需要另一个cookie。
从不使用本地存储来存储身份验证信息,它不遵循与Cookie相同的域和原始规则。在这里阅读更多内容:
https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Storage_APIs
免责声明:我在Stormpath工作,我们有一个托管用户管理解决方案,我们在安全上花了很多时间。我写了两篇博文,讨论JWT和前端认证:
Token Based Authentication for Single Page Apps (SPAs)
https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/
希望这有帮助!