【问题标题】:Why do browsers still allow Javascript to see cookies?为什么浏览器仍然允许 Javascript 查看 cookie?
【发布时间】:2009-08-19 07:58:55
【问题描述】:

我确信仍然有很多网站出于某种莫名其妙的原因使用 Javascript 来操作 cookie,但鉴于可能发生的所有 XSS,确实没有充分的理由允许这样做。为什么浏览器仍然允许这样做?为什么不简单地阻止 JS 看到 cookie?

【问题讨论】:

  • 因为它是一个基本功能。如果这让您感到困扰,请使用 NoScript。
  • 这不是关于我的,而是关于在我们希望从头开始重建但被禁止这样做的巨大不可维护代码库中的 XSS 漏洞利用获取他们的 cookie 的用户。 :)
  • codinghorror.com/blog/archives/001167.html HTTP Only cookie 很酷...
  • @dirtside 通过这个论点,我们应该从每个运行时中消除所有可能伤害用户的东西,以减轻对它的无能使用。
  • 您是否打算使用 Facebook Connect 或类似的服务?如果是的话,没有 JS Cookie 交互是不可能的。

标签: javascript cookies


【解决方案1】:

让我们明确一点; JavaScript 操作 cookie 是完全合理且可以接受的。它本身不会产生 XSS 问题。一个写得不好的网站。

【讨论】:

    【解决方案2】:

    我必须承认,这个问题类似于说“为什么浏览器仍然支持 HTML,它是旧的”。向后兼容性是一个大问题,切断所有现有的操纵 cookie 的 javascript 代码将是灾难性的。

    话虽如此,在某些情况下,cookie 的 javascript 操作对于跨站点通信等很有用。

    【讨论】:

      【解决方案3】:

      通过这种方式,您可以直接在 cookie 中设置首选项,而无需发出 AJAX 请求,并保存在服务器端的 session/user_profile 中。这对于您希望在重新访问网站时保留的一些 UI 首选项很有用,并且在服务器端更容易,因为您无需注册即可在会话过期时查看您的首选项。

      【讨论】:

      • 如果没有 cookie,您将如何实现会话?使用 URL 参数?这比 cookie 更糟糕。
      • +1。从 Web 开发人员的角度来看,带有 username=sean&password=1234 的 cookie 只是愚蠢的。但无论如何,带有 hide_tips=true 的 cookie 是无害的。
      【解决方案4】:

      您可以从服务器端设置 httponly cookie,而 javascript 看不到这些。这会产生你想要的效果。

      我有时依赖 cookie 来存储来自 javascript 的少量客户端数据,我知道这是次优的,因为浏览器会在每个请求中将 cookie 发送到服务器,即使它只在客户端使用.

      【讨论】:

      猜你喜欢
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多