无Cookie的SiteMap安全漏洞?

时间:2013-10-16 02:51:33

标签: asp.net session cookies

我们在IIS7中运行了一个ASP.Net网站项目,使用站点地图进行菜单导航,展示了我之前从未见过的无cookie行为。

当无cookie用户登录到站点时,他们遇到了导航通过不包含其会话ID的链接的预期问题,因此导致他们丢失会话上下文。这部分似乎很好理解,尽管我们可以手动处理这个问题,但是所有用户都应该出于其他原因启用cookie(这里的用户群很少),并且提供无cookie的支持是一个低优先级。

我们现在能够重现的更令人不安的行为是,当用户在应用程序池回收后访问该站点时,如果该用户禁用了cookie,他们将收到预期的无cookie URL和行为,但所有其他cookie启用用户现在将获得站点地图创建的链接,其中包含该第一个用户的会话ID。这意味着无cookie用户A登录,启用cookie的用户B登录,用户B点击链接,因为该链接包含用户A的会话ID,他们现在有效地进入用户A的会话并可以看到他们的数据,在网站被回收之前,此行为一直存在。

Web配置已将cookieless设置为自动检测,并且应用程序池回收的默认回收期为29小时。

我将开始在解决方案中寻找奇怪的请求处理程序和其他错误的自定义添加,但粗略的外观并没有让我认为我们看到的除了默认的站点地图行为之外的任何东西。

我的问题是:

  • 这是一个已知的错误或已记录的内容吗?
  • 站点地图解析链接是否以某种方式缓存?
  • 我没有看到对站点地图URL的任何编程操作,但是有没有办法从站点地图调试实际的URL生成,以查看它是如何以及为什么在其他启用cookie的响应中包含无cookie会话ID用户?

如何进一步追踪这一点的任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

一旦我们确认这与站点地图链接相关,它就缩小了搜索范围,我们找到了"FIX: ASP.NET 4 SiteMapProvider URLs Incorrect in Cookieless Mode"

  

出现此问题的原因是,当导航控件首次绑定数据时,将构建SiteMapProvider对象的URL表。然后缓存URL表以供将来在后续请求中使用     - http://support.microsoft.com/kb/2472263

在我们的案例中,我们看到的行为与KB文章中描述的问题直接相关,并且应用此修补程序修复了问题。