会话变量或cookie

时间:2012-08-06 14:50:16

标签: asp.net session-state session-cookies

我有一个系统可以让我的Intranet用户处理数据库记录。基本上记录是勾选/未记录的,这会更新每个放入单独会话变量的运行总计,然后提交到不同的数据库。每隔一段时间就会出现一些奇怪的事情,这些会话变量中的值会翻倍(或者更糟),而且我从来没有能够复制过这种情况(它似乎完全是随机的,幸运的是很少见)。

我正在考虑可能的重写,并且想知道是否更好地暂时使用cookie来存储值,然后强制它们到期以清除这些值。

作为这些的替代方案,ViewState适用于此吗?我已经简要地阅读了它,但没有明确设置viewstate值的经验。

我主要担心的是我的变量同时受到其他人使用系统的影响,但我认为会话变量的一部分是它们只能通过创建它们的会话来访问? / p>

1 个答案:

答案 0 :(得分:4)

ViewState仅用于回发数据,它不是替代数据,因为它在整个会话中不是持久的。毕竟这是一个“观点”状态:)。

会话变量实际上使用cookie,但是以更安全的方式,而不是简单地将所有相关数据存储在其中。只需将值直接存储在cookie中即可,但使用简单JavaScript的用户可以修改其cookie的内容。如果您对此不满意,请使用会话。

与在cookie中存储原始数据相比,会话的一个小缺点是数据存储在服务器上,这占用了空间和计算资源。并不多,但是如果你想拥有一个高流量的网站,或者考虑将所有东西和厨房水槽放在会议中,那就要考虑一下。

那么会话如何运作?它们存储特定于每个会话用户的数据,可通过密钥访问。该密钥通常存储在客户端计算机上的cookie中。当他们访问页面时,他们的cookie密钥被发送到服务器并且可以访问相关数据。要记住的一件大事是cookie的安全性是会话安全性的关键。如果您的站点容易受到XSS攻击(另一个帖子的主题),则用户可以窃取他人的cookie并伪装成他们,因为他们将拥有标识其他用户会话的ID。

总的来说,很难告诉你使用什么系统。我个人倾向于使用会话,因为它们易于实现,并且没有用户可修改数据的额外安全性很好。最后,你必须看看你的架构,并决定什么是最适合你的。