2013-10-16 125 views
1

我们有一个运行在IIS7中的ASP.Net Web站点项目,它使用站点地图进行菜单导航,展示了一个我以前从未见过的无cookie的行为。Cookieless SiteMap安全漏洞?

当无cookie用户登录到网站时,他们会遇到预期的导航问题,导致不包含其会话ID的链接因此导致它们丢失会话上下文。这部分似乎很好理解,虽然我们可以手动处理,但所有用户都希望因其他原因启用Cookie(这里的用户基数很小),并提供无Cookie支持是一项低优先级。

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

Web配置具有Cookieless设置为自动检测,并且应用程序池回收处于29小时的默认回收期。

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

我在这里的问题是:

  • 这是一个已经记录了已知的bug或东西吗?
  • 站点地图解析链接缓存不知何故?
  • 我没有看到任何对站点地图URLS进行编程式操作,但有没有一种方法可以从站点地图中调试到实际的URL生成,以查看它是如何以及为什么将cookie中的会话ID包含在启用cookie的响应中用户?

有关如何进一步跟踪此任何建议将不胜感激。

+0

它不会让我感到惊讶,如果它是一个错误,但我没有来源来验证雅或不。我在IIS和应用程序池回收方面遇到了很多问题。我最近的问题是IIS在销毁回收站上的本地用户环境证书,导致我们无法连接到某些服务器,除非我们明确指定了它已在运行的帐户的用户名和密码.... – ohmusama

回答

0

一旦我们确认这是与网站地图链接有关,它缩小了我们的搜索范围,我们发现这"FIX: ASP.NET 4 SiteMapProvider URLs Incorrect in Cookieless Mode"

发生此问题是因为导航控件是第一次数据绑定时,SiteMapProvider对象的URL表生成。那么URL表格被缓存以备将来使用在以后的请求 - http://support.microsoft.com/kb/2472263

在我们的情况下,我们看到的是直接相关的知识库文章中描述的问题,并应用此修补程序解决了问题的行为。