可以模拟cookieless网站中会话cookie的死亡吗?

时间:2011-08-31 15:04:01

标签: security session-state cookieless

我正在构建一个将在iframe中显示的网站/应用。我之前已经完成了很多次,并且它在过去引起了我很多问题......主要问题是跨域cookie被阻止。

我知道这是使用相同的根域名并设置document.domain的问题。但考虑到可爱的新欧盟cookie立法(omg他们是蹩脚的)以及浏览器在隐私和安全方面的总体方向,在iframe中使用会话cookie可能会变得越来越麻烦。因此,为了对网站进行一些防范,我宁愿在不使用cookie的情况下实现它。

到目前为止,我实现的实现只是设置一个查询字符串值,该值传递给所有页面。我想这与ASP.NET的无cookie会话功能相同。然而,这暗示如果某人使用公共计算机,稍后使用它的另一个人可以找到他们的URL(包括会话ID)并继续他们的会话。由于此站点处理不可接受的敏感数据。 ASP.NET无cookie的功能受到同样的漏洞(这让我对寻找解决方案感到有些悲观)。

我正在使用.NET进行开发,但这必须是适用于所有环境的通用问题。

简短版:

有没有人知道如何在iframe内运行的无cookie网站中维护会话状态(也许还有一些最佳做法)。当用户关闭浏览器时,必须有效地杀死会话,因此浏览器历史列表不会公开任何信息 - 就像使用普通的会话cookie一样。

可能的解决方案

我正在考虑这些问题。但它远非最佳。

  1. 该页面不断向服务器发出保持活动的ajax请求
  2. 服务器使用存储在查询字符串
  3. 中的ID的最后保持活动调用更新时间戳
  4. 如果保持活动时间戳超过10秒钟,则与该ID相关的数据将被终止,如果用户重新访问具有现已死ID的URL,则该用户将收到“会话超时 - 请重新开始”消息

1 个答案:

答案 0 :(得分:2)

  

我知道这是使用相同的根域名并设置document.domain

的问题

不 - 使用单点登录是一种更明智的方法(尽管仍使用cookie)

  

但考虑到可爱的新欧盟饼干立法(omg他们是蹩脚的)

转到read it,特别是注释25和26.有大量的退出条款。提供详细说明隐私信息的页面仍然是良好的做法和服务,这可能足以甚至超过该法案规定的任何义务。但是,请设计您的网站以检测用户不接受Cookie的位置并使其做出适当的响应。

  

我更愿意在不使用cookie的情况下实现它。

相信我,你没有。您已经提到通过URL传播会话ID - 这是唯一接近替代品的东西,但除了您提到的安全问题之外,它还非常脆弱和限制(例如,对于您的ajax调用,您将会必须解析当前url以提取会话ID并将其插入后续请求中。

请注意,所有这些都预先假定您的站点要求将状态保留在服务器端(这在某种程度上暗示了提及敏感数据并因此提供了身份验证)。