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

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

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

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

对于主动注销和检測到攻击注销会话,可以非常easy的记录操作日志。达到要求。

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

这样的尽管可以达到记录操作日志的效果。可是client向服务端多发了非常多请求,一旦系统并发量非常高的时候,服务端业务压力会添加。不是一个好的处理方式。

Webeasy可以配置会话超时时间。就应该可以监听会话的创建和注销吧?答案是肯定的,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>

Tomcat会话超时时怎样记录操作日志,满足安全审计要求的更多相关文章

  1. 使用SpringBoot AOP 记录操作日志、异常日志

    平时我们在做项目时经常需要对一些重要功能操作记录日志,方便以后跟踪是谁在操作此功能:我们在操作某些功能时也有可能会发生异常,但是每次发生异常要定位原因我们都要到服务器去查询日志才能找到,而且也不能对发 ...

  2. Appfuse:记录操作日志

    appfuse的数据维护操作都发生在***form页面,与之对应的是***FormController,在Controller中处理数据的操作是onSubmit方法,既然所有的操作都通过onSubmi ...

  3. MVC 记录操作日志与过滤特殊字符

    最近进行的MVC系统需要用到记录操作日志和过滤特殊字符的功能,如果每个action中都调用记录日志的方法就太麻烦了,所以根据需要结合mvc的过滤机制 写了个特殊字符验证与记录操作日志的公用类: pub ...

  4. Django记录操作日志、LogEntry的使用

    LogEntry是在后台开发中经常用到的模块,它在admin是默认开启的. 可以使用LogEntry模块记录所有用户的操作记录.一方面可以用来监督,另一方面可以用来做回滚. 1. 使用LogEntry ...

  5. Spring aop 记录操作日志 Aspect

    前几天做系统日志记录的功能,一个操作调一次记录方法,每次还得去收集参数等等,太尼玛烦了.在程序员的世界里,当你的一个功能重复出现多次,就应该想想肯定有更简单的实现方法.于是果断搜索各种资料,终于搞定了 ...

  6. tomcat 会话超时设置

    1.为单个WEB设置SESSION 在WEB.XML中添加 xml 代码 <session-config> <session-timeout>15</session-ti ...

  7. springboot springmvc拦截器 拦截POST、PUT、DELETE请求参数和响应数据,并记录操作日志

    1.操作日志实体类 @Document(collection = "operation_log") @Getter @Setter @ToString public class O ...

  8. .Net捕获网站异常信息记录操作日志

    第一步:在Global.asax文件下的Application_Error()中写入操作日志 /// <summary> /// 整个网站出现异常信息,都会执行此方法 /// </s ...

  9. 自定义日志注解 + AOP实现记录操作日志

      需求:系统中经常需要记录员工的操作日志和用户的活动日志,简单的做法在每个需要的方法中进行日志保存操作, 但这样对业务代码入侵性太大,下面就结合AOP和自定义日志注解实现更方便的日志记录   首先看 ...

随机推荐

  1. OpenGL编程逐步深入(十)索引绘制

    准备知识 OpenGl提供了一些绘图函数.到目前为止我们使用的glDrawArrays绘图函数属于"顺序绘制".这意味着顶点缓冲区从指定的偏移量开始被扫描,每X(点为1,直线为2等 ...

  2. 机器学习(七) PCA与梯度上升法 (上)

    一.什么是PCA 主成分分析 Principal Component Analysis 一个非监督学的学习算法 主要用于数据的降维 通过降维,可以发现更便于人类理解的特征 其他应用:可视化:去噪 第一 ...

  3. js数组去重问题

    1. 双层循环:外层循环,内层比较值: (1)利用splice直接在原数组进行操作 Array.prototype.delRepeat = function (){ var arr = this; v ...

  4. [笔记-统计学习方法]感知机模型(perceptron) 原理与实现

    前几天认把感知机这一章读完了,顺带做了点笔记 现在把笔记做第三次的整理 (不得不说博客园的LaTex公式和markdown排版真的不太舒服,该考虑在服务器上建一个博客了) 零.总结 适用于具有线性可分 ...

  5. Redis中的持久化操作

       本篇博客主要来解说一下怎样Redis中的持久化操作,当然了不是一篇理论性的博客,主要还是分享一下在redis中怎样来配置持久化操作.  1.介绍  redis为了内部数据的安全考虑,会把本身的数 ...

  6. android 推断是否支持闪光灯

    近期在做录制视频功能,在找一些资料时发现 要推断是否支持闪关灯,在这记录下来,怕以后忘记 public static boolean isSupportCameraLedFlash(PackageMa ...

  7. (iOS)确保设置话筒模式成功 AudioSessionSetProperty

    本人编写过一个应用,须要把实时音频播放出来,而且要从话筒播放声音,为此,作下面操作: //Step 1: 初始化 AudioSessionInitialize(NULL,NULL, NULL, sel ...

  8. UML之序列图

    一 序列图概述: 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸. 横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存 ...

  9. linux内核计算时间差以及jiffies溢出

    jiffies是每一个时钟中断,都会加1.这就导致一个问题.不管jiffies(一般来说是unsigned long类型)多少个字节,总有溢出的时候. 更极端的时候.当期jiffies是0xfffff ...

  10. Python爬虫爬取一篇韩寒新浪博客

    网上看到大神对Python爬虫爬到非常多实用的信息,认为非常厉害.突然对想学Python爬虫,尽管自己没学过Python.但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频.共三集,第一节讲爬取 ...