Tomcat会话超时时如何记录操作日志,满足安全审计要求

3 篇文章 0 订阅
2 篇文章 0 订阅

众所周知,在实际的Web应用程序中,会话管理一般都采用Web容器会话管理功能。

使用Tomcat做Web服务器也是如此,而且从安全的角度考虑,尽量避免去更改和干预Web容器的会话管理功能。

Tomcat会话管理功能肯定比我们自己做出来要全面和可靠,况且Tomcat是主流开源社区维护的,有专门的团队来开发和维护,一旦爆出安全漏洞,也能很快被修复。


在实际开发中,为了满足安全审计的要求,Web应用程序一旦有会话注销,就应该记录操作日志,注销一般分为操作者主动注销、应用程序检测到异常攻击主动注销会话、超时注销会话。

对于主动注销和检测到攻击注销会话,能够很容易的记录操作日志,达到要求。

但是对于超时会话注销,很多人都感觉没办法实现,一种比较常见的方法就是自己开发一个心跳程序,通过客户端页面不断向服务端发送心跳,服务端通过线程来接收心跳和轮训来去超时注销,从而记录操作日志。

这种虽然能够达到记录操作日志的效果,但是客户端向服务端多发了很多请求,一旦系统并发量很高的时候,服务端业务压力会增加,不是一个好的处理方式。


Web容易能够配置会话超时时间,就应该能够监听会话的创建和注销吧?答案是肯定的,Tomcat确实可以通过HttpSessionListener来实现,Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候。

这个接口也只包含两个方法,分别对应于Session的创建和失效:
public void sessionCreated(HttpSessionEvent se); 

public void sessionDestroyed(HttpSessionEvent se);

所以我们只要实现HttpSessionListener,在sessionDestroyed方法中可以实现记录操作日志的功能。


具体需要在我们Web应用程序的web.xml文件中来配置下我们实现的监听类,代码样例和web.xml配置如下:

1)代码样例

public class SessionManager implements HttpSessionListener
{

    public void sessionCreated(HttpSessionEvent se)
    {
        // ....
    }

    public void sessionDestroyed(HttpSessionEvent se)
    {
        // ......
    }
}

2)web.xml配置
<session-config>  
<session-timeout>30</session-timeout>  
</session-config> 
<listener>  
<listener-class>com.test.SessionManager</listener-class>  
</listener>  

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值