关于使用加密cookie取代session
目前公司想要做集群,请问关于使用加密cookie取代session方案. 1 楼 magicgod 2008-03-03 参考一下rails 2.0的缺省session方式就是这样 2 楼 highriver 2008-03-03 看到有人推荐apache下的roller实现的是这种方式.我对rails不熟悉.只是想找一个完速的方案.因为领导要求将所有的httpSession替换,以便集群时避免session的复制.网上查了一下,想通过cookie来解决.哪位对roller熟悉呢? 3 楼 flyraincn 2008-03-04 能不能把cookie中的信息加密一下,服务端处理时解密一下,只要能防止cookie中的信息不被篡改就行了吧 4 楼 lumin 2008-03-05 flyraincn 写道能不能把cookie中的信息加密一下,服务端处理时解密一下,只要能防止cookie中的信息不被篡改就行了吧
cookies中的信息可以更改吗?应该不能吧! 5 楼 aunox 2008-03-06 可以更改cookies内容。 6 楼 hexiaodong 2008-03-06 为什么要加密cookie?用随机字符串作cookie值就行了,在集中式认证服务器上,把这个随机值和用户Id做一个映射。 7 楼 liquidthinker 2008-03-06 加密cookie?不太明白意图。不管cookie加密与否,都需要在服务器端维护一个副本,只需要拿客户端的cookie到服务器端的副本比较验证就行了,既然都要验证,加不加密有什么区别呢。如果不在服务器上维护副本,又不用session,怎么维护状态呢。既然要在服务器上维护客户端cookie的副本,又跟使用session有合区别呢。我没看懂,还是楼主是想说sso? 8 楼 rojazz1999 2008-03-06 本人立志成为Javaeye的灌水之王,请大家多多支持. 9 楼 suxy 2008-03-06 两年前看过roller的实现,大概是这样:
1. 对用户唯一标记(可能是id,记不清了)根据某个算法加密为一个字符串,把这个字符串写入cookie,并存入数据库。
2. 用户发起请求时先从本地取cookie,并根据请求的用户id去数据库中查找它对应的cookie,如果跟本地cookie相同,则认为是正确的用户,重复步骤1的操作。如果不同,则验证失败。
上述操作是在一个filter中进行的。
大概就是这样,不知道我说清楚没有 10 楼 neptune 2008-03-07 不知道你的session中有大数据量时,你该如何处理。
例如:用户信息、权限列表。 11 楼 lixjluck 2008-03-07 用户信息、权限列表可以放在cache里,不一定非是session. 12 楼 lixjluck 2008-03-07 可以参考一下acegi的RememberMeService的实现。 13 楼 flyraincn 2008-03-07 liquidthinker 写道加密cookie?不太明白意图。不管cookie加密与否,都需要在服务器端维护一个副本,只需要拿客户端的cookie到服务器端的副本比较验证就行了,既然都要验证,加不加密有什么区别呢。如果不在服务器上维护副本,又不用session,怎么维护状态呢。既然要在服务器上维护客户端cookie的副本,又跟使用session有合区别呢。我没看懂,还是楼主是想说sso?
前提是集群,要拿客户端的cookie与服务器端的副本比较的话,那就得服务器间同步cookie副本,那与同步session有什么区别 14 楼 neptune 2008-03-07 这个问题在这个论坛上,也没少谈论了吧。
cookie是不可以完全代替session的,你这里的方案,cookie存放的只是一个为一的标识(如用户id),在服务器端你还是要维护session的数据的,例如把session如果放到memcache中。除非需求对session的数据量要求非常少,几个或十几个时可以使用加密cookie来处理,但为了系统的扩展性,不知这种实现还可以吗。 15 楼 jjcang 2008-03-07 session的实现就是cookie啊。
当然还有一些其它实现,不过一般都是cookie被禁止时才用的。 16 楼 zzxplayful 2008-03-08 你看一下CAS,它就是用cookie实现多个应用集成的,它采用的是https来加密cookie的 17 楼 pf_miles 2008-03-09 可以考虑专门建一个session服务器,用Berkerly DB等实现存储,把容器的标准session换掉。 18 楼 yt 2008-03-10 这个对密码的要求很高了,如果加密算法被破解的话,那系统衣服就脱光了 19 楼 iXh 2009-02-20 路过。。。。 20 楼 legend 2009-02-20 liquidthinker 写道加密cookie?不太明白意图。不管cookie加密与否,都需要在服务器端维护一个副本,只需要拿客户端的cookie到服务器端的副本比较验证就行了,既然都要验证,加不加密有什么区别呢。如果不在服务器上维护副本,又不用session,怎么维护状态呢。既然要在服务器上维护客户端cookie的副本,又跟使用session有合区别呢。我没看懂,还是楼主是想说sso?
他的意思可能是用 Cookie 取代 Session,这样服务器端不需要保存应用状态,节省服务器资源,而加密密钥则在服务器端共享,所有的客户端都是用同一个密钥。不过加密解密本身也会消耗计算资源,所以这种方法,可能只是把一个空间问题变成了一个时间问题。