【问题标题】:Cookieless SiteMap Security Hole?无cookie的站点地图安全漏洞?
【发布时间】:2013-10-17 04:14:57
【问题描述】:

我们有一个在 IIS7 中运行的 ASP.Net 网站项目,该项目使用站点地图进行菜单导航,它表现出我以前从未见过的无 cookie 行为。

当无 cookie 用户登录网站时,他们会遇到预期的问题,即浏览不包含其会话 ID 的链接,从而导致他们丢失会话上下文。这部分似乎很好理解,虽然我们可以手动处理,但所有用户都应该启用 cookie,因为其他原因(这里的用户群很小)并且提供无 cookie 支持是一个低优先级。

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

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

我将开始在解决方案中寻找奇怪的请求处理程序和其他错误的自定义添加,但粗略的看一下并没有让我认为我们看到的不是默认站点地图行为。

我的问题是:

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

我们将不胜感激有关如何进一步追踪此问题的任何建议。

【问题讨论】:

  • 如果这是一个错误,我不会感到惊讶,但我没有来源可以验证你是否。我在 IIS 和应用程序池回收方面遇到了很多问题。我最近的问题是 IIS 在回收时破坏了本地用户环境凭据,从而阻止我们连接到某些服务器,除非我们明确指定它已经在其下运行的帐户的用户名和密码......

标签: asp.net session cookies


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多