在扩展Web应用程序时使用进程内会话状态是不好的(在集群中不能很好地发挥作用,在服务器回收时会爆炸)。
假设您只需要在会话状态中保留少量信息,为此目的使用加密cookie项目的缺点是什么,而不是特定的状态服务器/ db?
显然,使用cookie会产生少量的网络开销,显然你是在假设客户端浏览器/移动设备上启用了cookie的情况下运行的。
您可以通过方法看到其他哪些陷阱?
对于简单,可扩展且强大的会话,这是一个不错的选择吗?
答案 0 :(得分:7)
这是一种简单,可扩展且强大的会话的绝佳方法。 当然,你的加密质量很重要,而这往往证明是正确的做法,但这是可行的。
我不同意其他一些海报:
可以针对存储为cookie的会话密钥启动针对加密的cookie值启动的任何重放攻击。如果这很重要,请使用https。
如果cookie被清除,存储在状态服务器或数据库中的会话数据也会丢失;当会话密钥丢失时,无法再检索会话。
答案 1 :(得分:2)
另一个缺陷是它们可能会被盗并在您的网站上重播。
BTW:除了在cookie中存储一些内容之外,你还应该考虑在cookie中存储密钥并使用memcached(memcached在服务器场之间工作)。答案 2 :(得分:2)
通常会将cookie用于会话ID,因此只要信息量很小,将信息存储在cookie中是一个不错的选择,尽管您不应存储任何有价值的内容(如CC)数字,SSN等)应该真正存储在cookie中,即使加密也是如此。
我不是专家,但根据我的经验,我发现以下情况属实(至少使用PHP和ASP.Net)。
<强>曲奇强>
状态服务器/ DB