2011-06-24 40 views
0

鉴于新的欧洲法律:是否有更好的会话管理方式? Cookies看起来很完美,因为我不需要在服务器上存储任何内容,所以会话不会丢失,并且会横向扩展到任意数量的服务器。为什么我不会用cookies做会话管理?

+0

什么是新的欧洲法律? – Robert

+1

Cookie是完美的,只要您只使用一个会话cookie,并执行服务器端的所有操作,而不是数百万的cookie,并且只要您使用HTTPS,以便任何人都无法窃取会话cookie。任何你能想到的用于会话管理的其他解决方案肯定都会比会话cookie有更多的缺陷。 –

回答

0

将值存储在隐藏字段中,这些隐藏字段在回发之间保留在客户端中,可能根据您的要求进行了加密。

如果您使用的ASP.NET有很多可用于此目的的设施,ViewState将允许您有效地完成与cookie相同的操作,只要您不需要在会话中持久保存信息即可。

如果您不使用ASP.NET,您可能将不得不编写您自己的服务器端组件,它将为您设置持久数据(必要时加密它,然后将其存储在适当的隐藏字段),并且当需要通过访问隐藏字段值和可能的解密来检索持久数据时,“获取”持久数据。如果你正确地做到这一点,你可以在你的所有项目中重新使用这个组件。

我没有听说过有关新法律的任何内容,但谷歌的第一个链接看起来像英国的保姆州政府的大规模失败我们都知道,老硬皮立法者始终坚持技术监管结束(facepalm)。

+0

显然,与此方法相关的网络资源成本有所增加。在使用客户端跨回发持久化数据与服务器之间存在资源折衷。哪种方法最适合您将取决于您的要求和硬件。由于您特意询问有关使用客户端的原因,因此我建议您在为客户端提供的页面正文中使用隐藏字段。请记住,即使您使用HTTPS,对这些字段进行加密也可能是明智的,因为在某些情况下,您可能不希望实际用户能够... –

+0

混淆了您隐藏的数据(插入SQL注入或尝试给予其他方式格式错误或不正确的数据以某种形式或形式违反应用程序的安全性)。 –

0

在cookie中存储会话数据会将该数据以及可能的代码内部运作暴露给任何可以访问用户计算机以及中间人的人。即使加密,我也不喜欢这个想法。另外,我认为如果仅包含在Cookie中,会话将更容易丢失,因为许多用户经常会倾倒cookie和相关的历史信息。借助强大的服务器端存储机制,会话数据更加稳定,IMO。