【问题标题】:CSRF Token from Browser Extension来自浏览器扩展的 CSRF 令牌
【发布时间】:2016-07-01 03:58:38
【问题描述】:

我有一个使用 krakenjs/lusca 来防止 CSRF 攻击的快速应用程序,它适用于我域内的所有路由。但是,我也有一个 chrome 扩展,我希望能够使用它从任何域发布到应用程序。根据我的研究,我认为我应该使用基于令牌的身份验证,所以我有两个问题:

  1. 我应该如何生成该令牌并将其发送到扩展以允许 应用来验证来自扩展的请求?
  2. 我应该如何使用扩展存储该令牌?

我发现的答案涉及服务器向其发出请求的 api,以及依赖于本地存储的令牌存储(我认为这不会解决我的问题,因为扩展应该能够从任意域进行 POST)。我很感激任何帮助!谢谢你。

【问题讨论】:

    标签: javascript node.js csrf csrf-protection kraken.js


    【解决方案1】:
    1. 您无法 100% 保护您的端点以进行扩展,但有一些解决方案可以限制其他人以意想不到的方式使用它。最简单的解决方案是使用 JsonWebToken。服务器将加密具有预定义结构的对象,例如 {email: 'user_email@google.com', created_date: new Date()} 并将其发送回扩展程序。当服务器接收到扩展的请求时,它会在响应之前尝试解密令牌并查看数据是否有效(遵循预定义的格式)。为了更安全,您应该进行一些身份验证,例如让用户先登录谷歌,看看他们是否真的是他们声称的身份,然后再颁发令牌...我建议您研究 OAuth2 流程的工作原理以获得参考!

    2. 有几个选项可以将令牌存储在扩展程序上。我更喜欢将它存储在 chrome.storage.sync https://developer.chrome.com/extensions/storage#property-sync。当扩展第一次加载时,它应该检查是否存储了一个令牌,如果没有,则调用服务器获取一个。

    【讨论】:

    • 谢谢 phnkha,我很感激。一件事 - 我应该担心在服务器端公开提供 jwt 的路由吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2023-03-21
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2012-07-16
    相关资源
    最近更新 更多