关于javascript:在浏览器中存储令牌

Storing Tokens in the browser

问题=]

  • 根据我的研究,为了防止CSRF攻击,将Web令牌存储在本地存储中似乎是使用cookie的首选方法(我知道本地存储很容易受到XSS攻击,尽管看起来比CSRF易于预防)。话虽这么说,但我无法找到有关使用本地存储这种方式的任何相关指南...
  • 我正在寻找一些帮助,以了解以下工作原理...

  • 将服务器签名的令牌传递到浏览器的本地存储的首选方法/工作流程是什么?
  • 浏览器存储令牌后,如何使用该存储的令牌。

    • 我是否需要停止通过JS表单的默认提交,然后在每个请求中都发送带有authorization: Bearer <token>标头的AJAX请求?
    • 当用户单击指向该用户拥有的资源的链接时,如何将该令牌发送到服务器以授予对受保护资源的访问权限?

工具

  • 前端

    • HTML5(从车把编译)
    • JS
    • CSS(从SASS编译)
  • 后端

    • nodeJS(使用Express)

注意:我希望以后可以使用代码示例来编辑此帖子(一旦我掌握了这个笑话),将来可以帮助其他像我这样困惑的人


首选方法是返回带有来自/ users / login请求的成功响应的令牌(无论您希望使用的是标头还是正文)。然后将其放入本地存储。

最重要的是,没有HTTPS不能使用JWT。否则,您最终将传递不受保护的凭据。

获取令牌后,您应该手动将其作为标头添加到每个请求中。使用一些js ajaxpackage器可以简化此任务。

据我所知,没有方法发送带有元素的自定义标头。因此,我最终将附加令牌(某些哈希,而不是JWT)与链接一起传递。但这不是最佳的。如果在服务器端呈现页面,则最好使用会话。