如何关联session.sessionid和IIS Log会话cookie?

时间:2015-06-02 15:17:52

标签: asp.net session iis asp-classic iis-6

我们正在将一些跟踪信息记录到经典asp站点中的数据库表中。捕获的信息之一是用户会话ID(session.sessionid)。捕获的示例包括:

  • 808592330
  • 14267388
  • 78330403

然后,在我们的IIS日志中单独记录会话cookie(这些与上面的示例无关......我刚刚从日志中抓取我碰巧打开了):

  • ASPSESSIONIDACCDBSTT = FKOFEKICECOLNGLOIFLFINEI
  • ASPSESSIONIDACCDBSTT = GLOFEKICEECEFHFFFCFFEPCA

最重要的问题是,如何将长会话ID与“可能已编码且可能经过哈希或加密”的文本表示相关联。

其次,ASPSESSIONID表示附加的值是什么? (例如ASPSESSIONID中的“ACCDBSTT” ACCDBSTT

1 个答案:

答案 0 :(得分:1)

根据this MSDN article(这是古老的,但在我的经验中确实有意义):

  • 会话ID值是32位长整数。
  • 每次重新启动Web服务器时,都会选择随机的会话ID起始值。
  • 对于创建的每个ASP会话,此会话ID值为 递增。
  • 32位会话ID与随机数据混合 加密以生成16个字符的cookie字符串。后来的时候 收到cookie后,可以从中恢复会话ID 16个字符的cookie字符串(ASPSESSIONID)。
  • 每次重新启动Web服务器时,都会随机选择使用的加密密钥。

这使得听起来在事后解密cookie是不可能/不切实际的。

如果您要执行的操作是将IIS日志记录与数据库更改相匹配,那么我们过去完成此操作的方式是将ASPSESSIONID列添加到数据库AuditLog表中。每次我们记录更改时,我们也只从Request.ServerVariables(“HTTP_COOKIE”)获取ASPSESSIONID * cookie(会话cookie不通过Request.Cookies集合公开)并将其保存在数据库中。然后,当我们遇到需要跟踪的问题时,我们只需在IIS日志中搜索AuditLog表中cookie的值(反之亦然)。