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

How can I correlate session.sessionid and IIS Log session cookie?

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

然后,分别在我们的 IIS 日志中记录会话 cookie(这些与上述示例无关...我只是从碰巧打开的日志中抓取):

最重要的问题是,如何将长 sessionID 与 "likely encoded and possibly hashed or encrypted" 文本表示相关联。

其次,附加到 ASPSESSIONID 的值代表什么? (例如 ASPSESSIONIDACCDBSTT 中的 "ACCDBSTT")

根据 this MSDN article(这是古老的,但根据我的经验肯定是有道理的):

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

这听起来像是 impossible/impractical 在事后解密 cookie。

如果您想做的是将 IIS 日志记录与数据库更改相匹配,我们过去完成此操作的方法是向我们的数据库 AuditLog table 添加一个 ASPSESSIONID 列。每次我们记录更改时,我们也只从 Request.ServerVariables("HTTP_COOKIE") 中获取 ASPSESSIONID* cookie(会话 cookie 不会通过 Request.Cookies 集合公开)和也将其保存在数据库中。然后,当我们遇到需要追踪的问题时,我们只需在 IIS 日志中进行文本搜索,以查找 AuditLog table 中 cookie 的值(反之亦然)。