众所周知。在实际的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. WinRar 设置默认的压缩格式为zip

    By default, WinRar uses the RAR archive format for compressing files. You may prefer using the more ...

  2. [AGC018 B] Sports Festival 解题报告

    题目链接:https://agc018.contest.atcoder.jp/tasks/agc018_b 题目: 题目大意: 有N个人参加M个体育项目,每个人对体育项目的喜爱程度有一个排名,A[i] ...

  3. 安卓开发--AsyncTask

    package com.cnn.asynctask; import android.app.Activity; import android.content.Intent; import androi ...

  4. java9新特性-9-语法改进:try语句

    1. 使用举例 在java8 之前,我们习惯于这样处理资源的关闭:     java 8 中,可以实现资源的自动关闭,但是要求执行后必须关闭的所有资源必须在try子句中初始化,否则编译不通过.如下例所 ...

  5. 机器学习规则:ML工程最佳实践----rules_of_ml section 1【翻译】

    作者:黄永刚 机器学习规则:ML工程最佳实践 本文旨在指引具有机器学习基础知识的工程师等人,更好的从机器学习的实践中收益.介绍一些应用机器学习需要遵循的规则,类似于Google C++ 风格指南等流行 ...

  6. Oracle中根据表明获取对应表触发器名称

    Select object_name From user_objects a left join all_triggers b on a.object_Name = b.trigger_name wh ...

  7. GoldenGate 日常监控

    正确启动数据库 源端启动数据库 SQL>  startup 源端启动goldengate GGSCI >  start mgr GGSCI >  start * 目标端启动数据库 S ...

  8. MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

    这几天因为工作需求,需要把MySQL请出来,所以将尘封已久的MySQL进行启动.可是事与愿违,兴许是许久没有访问MySQL了,MySQL生气的不理我,并向外抛出一阵阵报错.1.其中一个是:Window ...

  9. python BeautifulSoup 获取页面多个子节点中的各个节点的内容

    页面html格式为 <tr bgcolor="#7bb5de"><td style="border-bottom: 1px solid #C9D8AD& ...

  10. etTimeout来实现setInterval

    etTimeout来实现setInterval <script type="text/javascript"> function interval(func, w, t ...