记录没有JSESSIONID的用户的每次唯一访问

时间:2013-02-11 22:36:30

标签: spring logging spring-security

我正在尝试将唯一标识符记录到我的应用程序日志中,该标识符将清楚地跟踪用户在Spring MVC应用程序中的每次访问。目的是将此标识符存储在cookie中,并将grep存储为与标识符匹配的日志。当质量保证或客户支持遇到应用程序问题时,他们将从cookie提供标识符的值,并可由应用程序开发团队用于搜索和排除故障。

我不想使用JSESSIONID,因为它可以被劫持。我目前正在记录时间戳和用户ID,但是当用户可以同时从多个浏览器登录时,这无济于事。

Spring是否提供支持此功能的任何功能?如果没有,有没有办法仍然使用JSESSIONID但阻止会话劫持?

1 个答案:

答案 0 :(得分:2)

获取会话ID(jsessionid)并使用SHA-1或类似方法对其进行哈希处理。理论上,哈希是不可逆的,但鉴于输入是唯一的,它是唯一的。

我们使用ServletFilter将此值存储在MDC(slf4j / log4j)中,然后允许我们在日志模式中使用该值。示例:http://veerasundar.com/blog/2009/11/log4j-mdc-mapped-diagnostic-context-example-code/