为了提高性能,我试图消除一个普通的“会话cookie”,但是加密了cookie本身的所有信息。签名会话cookie。一个好主意?
一个很简单的例子:
userid= 12345
time=now()
signature = hmac('SHA1',userid + ":" + time, secret);
cookie = userid + ':' + time + ':' + signature;
的时间将用于最大expirytime,所以饼干不会靠永远。
现在对于一个大问题:这是一个坏主意吗?
我最好用AES256代替吗?在我的情况下,数据不是保密的,但在任何情况下都不能改变。
编辑
一些好的批评和意见后,我想补充一点:
- 的“秘密”将是唯一的每个用户和不可预测的(随机字符串+用户名?)
- Cookie将自动失效(这是基于时间值+一定的秒数完成的)。
- 如果用户更改密码(或者甚至注销?),秘密应该改变。
最后一点:我试图想出减少数据库负载的解决方案。这只是我正在调查的解决方案之一,但它是我最喜欢的。主要原因是我不必研究更适合这种数据的其他存储机制(memcache,nosql),它使Web应用程序更加“无状态”。
你的平台是什么? – 2010-07-13 19:30:30
嗨米粉饼干,这是PHP,但我离开它,以避免特定于平台的讨论。目前我们在多个web服务器上使用PHP,并使用Master-Master mysql设置。会话cookie被缓存在memcached中。我们的瓶颈主要是附加和删除Cookie。复制还附加到辅助数据中心,并且会话相关查询是流量的一大块。 – Evert 2010-07-13 19:49:44
Evert,如果您用问题中概述的方法成功实施了整个客户端会话,我会感兴趣。您的实施细节是什么使您的系统尽可能安全?谢谢:) – 2011-07-11 08:42:25