【问题标题】:Why doesn't document.cookie show all the cookie for the site?为什么 document.cookie 不显示站点的所有 cookie?
【发布时间】:2010-11-04 13:26:19
【问题描述】:

我去一个使用 vBulletin 3.8 的论坛。当我登录时,我使用 firebug 查看设置了哪些 cookie。我看到了这些 cookie:

__utmb、__utmc、__utma、__utmz、bbsessionhash、vbseo_loggedin、bbpassword、bbuserid、bblastactivity、bblastvisit

它们都有一个值集,并且域是相同的。

但是当我使用 JavaScript 查看它们时,它只看到了这些 cookie:

__utmb、__utmc、__utma、__utmz、vbseo_loggedin、bblastactivity、bblastvisit

在 firebug 中,我只看到实际设置的这三个 cookie:bbsessionhash、bbpasword 和 bbuserid。 HTTPOnly 列中的 HTTPOnly。这是什么意思,这就是我在 JavaScript 中使用 document.cookie 看不到这些 cookie 的原因?

【问题讨论】:

    标签: javascript cookies


    【解决方案1】:

    来自http://en.wikipedia.org/wiki/HTTP_cookie

    Cookies 不直接可见 客户端程序,例如 JavaScript(如果已发送) HttpOnly 标志。从点 服务器的视图,唯一的 相对于正常的差异 情况是 set-cookie 标头 行添加了一个新字段,其中包含 字符串`HttpOnly':

    Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net; HttpOnly

    当浏览器收到这样的 cookie,它应该用作 通常在以下 HTTP 交换中, 但不要让它可见 客户端脚本。 HttpOnly 标志不是任何标准的一部分,也不是在所有浏览器中都实现。

    2017 年更新: 自 2009 年以来已经过去了很多时间,HttpOnly 标头标志已成为标准,在 section 5.2.6 of RFC6265 中定义,存储语义在同一文档中描述(在整个 RFC 文本中查找“http-only-flag”)。

    没有方法可以从“非 HTTP”API 访问有关 HttpOnly cookie 的任何内容,例如JavaScript。按照设计,既不能读取也不能写入此类 cookie。

    【讨论】:

    • 但是有没有办法从前端以某种方式访问​​这些 cookie? Cookie 管理器 Chrome 扩展程序正在显示它们,但 document.cookie 没有。
    • @SilverRingvee,抱歉,没有。如果有办法,应该报告和修复浏览器安全漏洞(并且是一个非常严重的漏洞)。不过,浏览器扩展是不同的问题 - 它们具有比网站更高的权限,并且可以访问特权 API(例如chrome.cookies.getAll for Chrome) 可以看到所有的 cookie。
    • @SilverRingvee ,你有没有找到任何方法来访问带有 HTTPOnly 标志的 cookie?
    • @RewanthCool 我现在意识到,如果可能的话,这将是一个非常糟糕的安全问题。
    • @SilverRingvee 我尝试使用 XMLHTTPRequest 但没有用。这是参考:forums.asp.net/t/…。看看这个!!
    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多