是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie

Is a javascript bookmarklet that can set domain cookies breaking cross-domain security?

本文关键字:设置 安全 cookie 一个 bookmarklet javascript      更新时间:2023-09-26

我正在创建一个bookmarklet,用于广泛的域。我想设置一些cookie来存储这个bookmarklet的临时设置,所以我认为从这个脚本中设置cookie会将cookie分配到脚本的来源域。

事实并非如此,bookmarklet能够将cookie分配到当前正在查看的网站的域。这不适合我的需求(这会记住每个域的设置,而不是所有域的bookmarklet)。

我的问题是,这是否在某种程度上违反了跨领域政策?还有一个后续问题,我如何为bookmarklet存储cookie,而不是为其使用的正确域存储cookie。

Bookmarklet在当前页面的上下文中运行,因此这是它们运行的安全上下文,因此这不会破坏跨域策略。您只能在当前页面的域上设置cookie。正因为如此,你的小书签无法拥有自己的cookie。

这与从各种域加载到给定页面中的脚本相同。重要的是页面的来源,而不是脚本的来源。

据我所知,在所有域中为脚本保存一次设置的唯一方法是使用跨域JSONP并将设置存储在服务器上,但您可能仍然难以识别唯一用户。

听起来你想做的事情更适合于一个有本地存储的浏览器插件。

它不会破坏跨域策略,因为它实际上是在一个单独的域上运行的(这是bookmarklet背后的要点)。

如果你想存储cookie信息,可以使用第三方服务(如中所示,拥有自己的服务器,其中包含接受cookie更改的代码)。请注意,这可能是一个安全问题,因为每个域都可以为您的用户获取cookie,除非您让您的服务只写(我对此表示怀疑)。

还有另一种选择——不要将设置保存在cookie中。请改用其他存储介质。