Javascript 安全浏览器扩展API请求

Javascript 安全浏览器扩展API请求,javascript,authentication,google-chrome-extension,csrf,browser-extension,Javascript,Authentication,Google Chrome Extension,Csrf,Browser Extension,我不敢相信我现在正在问这个问题,但我不知道如何解决以下问题: 我有一个web应用程序,可以在浏览器中记录每个访问过的页面,以便更好地搜索浏览器历史记录。该扩展是一个chrome扩展,需要向我的API发出POST请求。显然,我需要避免CSRF问题,即其他站点使用用户会话将任意数据发布到其浏览器历史记录中。但是,由于扩展作为内容脚本在不同的源中运行,因此我无法检索CSRF令牌,因此无法发出经过身份验证的POST请求 编辑: 所以我现在知道我可以使用chrome.storage(以及其他浏览器中的等价

我不敢相信我现在正在问这个问题,但我不知道如何解决以下问题:

我有一个web应用程序,可以在浏览器中记录每个访问过的页面,以便更好地搜索浏览器历史记录。该扩展是一个chrome扩展,需要向我的API发出POST请求。显然,我需要避免CSRF问题,即其他站点使用用户会话将任意数据发布到其浏览器历史记录中。但是,由于扩展作为内容脚本在不同的源中运行,因此我无法检索CSRF令牌,因此无法发出经过身份验证的POST请求

编辑:

所以我现在知道我可以使用chrome.storage(以及其他浏览器中的等价物)来存储一个只有我的content_脚本才能读取的令牌。然而,我仍然没有解决如何首先将该令牌放入chrome.storage的问题


我似乎错过了一些非常明显的东西…

我怀疑内容脚本是不必要的,您应该使用您的API来获取用户的浏览活动


您仍然需要用户在浏览器中的某个位置登录到您的服务。如果您将服务的来源作为主机权限,您的扩展将能够,这可能足以解决您的XSRF问题,至少只要没有其他人可以拦截用户的登录cookie。

FYI,我意识到chrome.storage提供了一种同步/传递机密数据的方法,例如只有脚本才能访问的令牌


因此,解决方案是访问您的网页,让内容脚本提取令牌并将其存储在chrome.storage中。

您可以在安装时随时设置该令牌。最初查询服务器以获取令牌。用户允许将该计算机ID添加到其帐户中。完成。这听起来可能很愚蠢,但我如何安全地查询我的服务器?据我所知,我无法为该查询获取CSRF令牌,如果其CSRF受保护,任何人都可以获取用户的令牌?1。扩展查询服务器,获取尚未激活的令牌。2.扩展将打开一个浏览器窗口,将用户带到您的网站进行登录。3.用户登录并被提示将此新计算机添加到其帐户。4.用户启用计算机,有效地启用了新的安全令牌。此外,我已经有一段时间没有编写Google Chrome扩展了,但是您检查过它的HTTP请求了吗?您确定其中没有标识信息,例如
Referer
标题或引用扩展ID的内容吗?您可以用来表明请求来自您的分机?我将尝试您提出的解决方案,但是关于这个请求的任何花哨的东西的问题是,我认为最终被任何人都可以欺骗的事实打败了?我需要访问DOM来传达网页内容,这就是为什么我首先需要content_脚本的原因。不过,很高兴知道您可以将XHRs作为用户,这一策略与使用oauth标识用户相比如何?