我无法相信我现在正在问这个问题,但我不知道如何解决以下问题:
我有一个网络应用程序,可以在浏览器中记录每个访问过的页面,以便更好地浏览历史记录。该扩展程序是一个Chrome扩展程序,需要向我的API发出POST请求。显然,我需要避免CSRF问题,即使用用户会话的其他站点将任意数据发布到他的浏览器历史记录中。但是,由于扩展名作为内容脚本以不同的原点运行,因此无法检索CSRF令牌,因此无法进行经过身份验证的POST请求。
编辑:
所以我现在知道我可以使用chrome.storage(和其他浏览器中的等价物)来存储只有我的content_script才能读取的标记。但是,我仍然没有解决如何在第一时间将该令牌放入chrome.storage的问题
我似乎错过了一些非常明显的东西......
答案 0 :(得分:0)
我怀疑内容脚本不是必需的,您应该使用chrome.webNavigation中的event page API来获取用户的浏览活动。
您仍然需要用户在浏览器中的某个位置登录您的服务。如果您将服务的来源作为主机权限,您的扩展程序将能够make XHRs as the user,这可能足以解决您的XSRF问题,至少只要没有其他人可以拦截用户的登录cookie。
答案 1 :(得分:0)
仅供参考,我意识到chrome.storage提供了一种同步/传递机密数据的方法,例如您的脚本只能访问的令牌。
因此,解决方案是访问您的网页,并让内容脚本提取令牌并将其存储在chrome.storage中。