从不同的路径检索 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的主要内容,如果未能解决你的问题,请参考以下文章

Python文件路径和名称检索

iOS 7 从文档中检索收件箱目录

Django中的路径特定Cookie

如何如何发送cookie

如何使用jQuery在另一个页面上获取cookie值?

更改 PhpMyAdmin Cookie 路径