3

Can someone give me some good reading material on what's best in different cases?

I guess when you have a small website with not a lot of users, you could go for sessions since they are stored on a server. But for a bigger amount of users it may be better to go with cookies? And how do they both score on safety?

4

3 回答 3

6

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

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

于 2012-05-03T11:38:00.267 回答
3

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

饼干:

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

会话没有。

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

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

于 2012-05-03T11:30:57.337 回答
2

我认为你应该在不同的情况下使用它们,因为它们都有优点和缺点。会话的最大缺点是当浏览器关闭时会话通常会被破坏。另一方面,饼干不会那么容易被破坏。虽然会话几乎总是支持,但并不总是支持 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)

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

于 2012-05-03T11:53:43.810 回答