【问题标题】:What are pro's and cons of cookies versus sessions?cookie 与会话的优缺点是什么?
【发布时间】:2012-05-12 21:53:31
【问题描述】:

谁能给我一些关于不同情况下最好的阅读材料?

我想当你有一个用户不多的小网站时,你可以去进行会话,因为它们存储在服务器上。但是对于更多的用户来说,使用 cookie 可能会更好?他们在安全方面的得分如何?

【问题讨论】:

  • 如果您在欧盟境内的网站或在欧盟以外托管的网站工作,但对于欧盟公司而言,要记住的一点是,今年 5 月 26 日,新的 cookie 立法将出台生效,这意味着我们不能在未经用户同意的情况下将数据存储在 cookie 中。
  • 所以这意味着在条款和条件中添加一行“我们将在您的计算机上存储一个 cookie 以便您登录”?
  • 还值得记住的是,尽管人们大喊“cookie 法”,但它也不允许您使用其他方法来跟踪用户(以及通过 cookie 跟踪的会话(如 99% + are) 使用 cookie)。此外,如果基本功能需要 cookie,则您不需要许可(例如,他们将第一件商品添加到购物篮中,您可以启动会话并设置 cookie 来跟踪会话)。
  • @Vincent — 不可以。权限必须是明确的,而不是隐藏在没有人阅读的 T&C 中。伊纳尔。

标签: html session cookies


【解决方案1】:

会话管理分为两种方法——服务器端和客户端。 cookie 的使用将信任置于客户端以及应用程序的物理状态管理部分。并非所有浏览器都支持 cookie,用户可以根据自己的判断选择启用或禁用 cookie。这给许多开发人员设置了一个独特的障碍,因为他们不能完全依赖客户端系统来确保他们积极接受 cookie。客户端可以随时终止活动 cookie。使用 cookie 的好处是它由客户端管理,并且可以存在于客户端系统上,用于跟踪对您的网站的访问和其他需要长期保存的数据。

另一方面,会话是服务器端技术。它们由服务器主动管理,它们的状态分别随服务器而生和死。无论客户端系统如何,它们都是确保开发人员能够跨浏览器维护某种状态的好方法。由于网络农场等概念,会话在本质上可能更复杂,但可以通过选择适当的会话状态管理和存储类型来克服。使用会话的缺点是它们通常是短暂的,并且是为了管理对您网站的独特访问而创建的,不会持续很长时间。

【讨论】:

    【解决方案2】:

    会话几乎总是使用 cookie 将会话与用户相关联(尽管可以在查询字符串中传递字符串或在每个请求中传递表单数据)。

    Cookie:

    • 必须包含在每个 HTTP 请求中
    • 限制您可以存储的数据量
    • 将您存储的数据暴露给用户(以及如果您不使用 SSL,任何可以嗅探其流量的人)
    • 允许用户直接编辑数据
    • 可以设置为持续一段时间

    会话没有。

    但是对于更多的用户来说,使用 cookie 可能会更好?

    如果您要存储 那么多 数据,那么您要么有一个很小很小的硬盘,要么您将超过 cookie 大小限制......所以不。

    【讨论】:

    • 虽然 cookie 有其优点。 Cookie 会持续预设的已知时间,而会话则不会。 Cookies 在连接之间持续存在,会话不会。
    • 我上面列出的一些事情(包括提到的持久性)不是“缺点”,只是现实。根据上下文,它们可能是合意或不合意的特征。
    【解决方案3】:

    我认为你应该在不同的情况下使用它们,因为它们各有利弊。 会话的最大缺点是当浏览器关闭时会话通常会被破坏。另一方面,饼干不会那么容易被破坏。 虽然会话几乎总是支持,但并不总是支持 Cookie。

    它们都不安全。据我所知,cookie 使用的性能略高一些。在客户端存储数据的一种更安全(更安全但不安全)的方法是将会话信息验证为保存在数据库中的哈希值。在数据库中存储带有哈希的会话 ID。并查一下。下次。如果你真的想要安全。使用令牌,每次查找信息时生成一个新令牌。

    所以我不得不做出这样的决定。如果必须为多个浏览器会话存储信息。使用cookies。但如果您只需要保存几个页面切换的信息,只需使用会话即可。

    编辑:好吧,我在我的 apache 服务器上运行它并跟踪 RAM 和 CPU 活动。 (没有显着结果)我还检查了服务器将 1000 个变量(包含 30 个字符长的字符串)设置和取消设置到会话和 Cookie 中的时间。做了几次所有测试并取了平均值。结果。这是结果。

    COOKIES
      Set: 0.001863 seconds.
      Unset: 0.004932 seconds.
    
    SESSIONS:
      Set: 0.000494 seconds. (very consistent results)
      Unset: 0.000502 seconds. (Again very consistent)
    

    所以会话速度要快得多,而且更加一致。如果您能够使用会话。我肯定会去参加会议。

    【讨论】:

    • 无需读取,在客户端保存数据永远不安全。您可以通过在服务器端检查哈希来使其更安全,但始终可以进行数据操作。
    • 是的,但是您将哈希存储在哪里以与会话/cookiedata 中的哈希进行比较?
    • 将它们存储到服务器端的数据库中。并将 sessionid 与数据库中的信息匹配以验证 cookie/会话。我会把这个添加到答案中。
    猜你喜欢
    • 2011-07-08
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2011-10-27
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多