【问题标题】:Retrieve a cookie from a different path从不同的路径检索 cookie
【发布时间】: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 值。 有什么线索吗?

【问题讨论】:

    标签: javascript path dns cookies


    【解决方案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吗?
      猜你喜欢
      • 1970-01-01
      • 2014-01-04
      • 2014-03-16
      • 2013-01-08
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多