从不同的路径检索 cookie
Posted
技术标签:
【中文标题】从不同的路径检索 cookie【英文标题】:Retrieve a cookie from a different path 【发布时间】:2010-10-31 01:25:04 【问题描述】:我当前的文档 URL 是 http://127.0.0.1/foo,我需要更改 http://127.0.0.1/bar 的 cookie 值。 document.cookie 是空的,因为文档的 URL 是 foo。 目前,我只想读取 cookie 值。 有什么线索吗?
【问题讨论】:
【参考方案1】:当您创建 cookie 时,如果您将路径设置为“/”而不是“foo”,您将能够在域中的任何位置读取它,包括“/foo”、“/bar”等。
【讨论】:
我无法更改 cookie 的创建和路径。所以这意味着不可能从 foo 访问 bar 的 cookie? 这不是一个大的安全问题,因为 cookie 并没有真正受到保护。由于 SOP 忽略路径,cookie 路径不是有意义的安全屏障。【参考方案2】:您可以创建一个<iframe>
指向/bar
内的资源,并将跨框架脚本插入其中。例如:
<iframe src="/bar/blank.html" id="barframe"></iframe>
var barframe= document.getElementById('barframe');
var bardocument= 'contentDocument' in barframe? barframe.contentDocument : barframe.contentWindow.document; // IE compat
alert(bardocument.cookie);
Cookie path=
是一种防止意外 cookie 名称冲突的便利措施。鉴于不同的路径共享一个 javascript 源,它不是一种有效的安全机制。
【讨论】:
+1 指出 cookie 路径不是有意义的安全墙。 路径是一种性能特性,而不是安全特性......我错过了“barframe.contentDocument”部分。非常感谢。来自我的 +1。【参考方案3】:您不能从不同的路径访问 cookie - 否则将是一个安全漏洞。
我能想到的唯一方法是让/bar
设置一个其path=/
的cookie,以便/
(包括/foo
)中的所有页面都可以访问它。
【讨论】:
【参考方案4】:正如 JJ 和 grawity 所提到的,您无法从您的页面执行此操作。不过,你有一个变通办法。
我。放置一个指向http://localhost/bar 的 iframe。在存储 cookie 值的“栏”页面上有一个隐藏元素。 (让这个 iframe 为 1*1 大小,所以它不可见)。
二。在“foo”页面上使用 JavaScript 来获取 cookie 值。
也可以使用类似的方法(经过修改)来写入 cookie 值!
谢谢,
拉姆吉。
【讨论】:
这不会让互联网上的任何人抢到cookie吗?以上是关于从不同的路径检索 cookie的主要内容,如果未能解决你的问题,请参考以下文章