当涉及到扩展 Web 应用程序时,使用进程内会话状态是有害的(不能很好地与集群一起使用,当服务器回收时会爆炸)。
假设您只需要在会话状态中保留少量信息,那么为此目的使用加密的 cookie 项而不是特定状态服务器/数据库的缺点是什么?
显然,使用 cookie 会产生少量的网络开销,并且显然您是在客户端浏览器/移动设备上启用 cookie 的假设下操作的。
您还可以看到哪些其他陷阱?
对于简单、可扩展和健壮的会话来说,这是一个不错的选择吗?
当涉及到扩展 Web 应用程序时,使用进程内会话状态是有害的(不能很好地与集群一起使用,当服务器回收时会爆炸)。
假设您只需要在会话状态中保留少量信息,那么为此目的使用加密的 cookie 项而不是特定状态服务器/数据库的缺点是什么?
显然,使用 cookie 会产生少量的网络开销,并且显然您是在客户端浏览器/移动设备上启用 cookie 的假设下操作的。
您还可以看到哪些其他陷阱?
对于简单、可扩展和健壮的会话来说,这是一个不错的选择吗?
对于简单、可扩展和健壮的会话来说,这是一种极好的方法。当然,你的加密货币的质量很重要,这通常是一件很难做到的事情,但这是可以做到的。
我不同意其他一些海报:
可以针对加密的 cookie 值发起的任何重放攻击都可以针对存储为 cookie 的会话密钥发起。如果这很重要,请使用 https。
如果清除 cookie,存储在状态服务器或数据库中的会话数据也会丢失;当会话密钥丢失时,将无法再检索会话。
另一个陷阱是它们可能被盗并在您的网站上重放。
顺便说一句:除了在 cookie 中存储一些东西之外,您还应该考虑在 cookie 中存储一个键并使用 memcached 之类的东西(memcached 跨服务器场工作)。
好吧,通常 cookie 用于会话 ID,因此只要信息量很小,将信息存储在 cookie 中就是一个不错的选择,尽管您不应该存储任何有价值的东西(如 CC 号码、SSN等)应该真正存储在 cookie 中,即使已加密。
我不是专家,但根据我的经验,我发现以下是正确的(至少使用 PHP 和 ASP.Net)。
曲奇饼
状态服务器/数据库