众所周知。在实际的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. 迷宫求解_数据结构c语言版

    #include <iostream> #include <string> #include <cstdio> #include <cstdlib> # ...

  2. rest_framework-解析器-总结完结篇

    感谢alex和武老师 前戏: Djaogo对请求体只支持 application/x-www-form-urlencoded请求头以及name=alex&age=18的数据格式 django. ...

  3. BZOJ 2424 DP OR 费用流

    思路: 1.DP f[i][j]表示第i个月的月底 还剩j的容量 转移还是相对比较好想的-- f[i][j+1]=min(f[i][j+1],f[i][j]+d[i]); if(j>=u[i+1 ...

  4. 泪奔,配好了bioconductor环境

    最近因为极度忙,没有写总结.今天补一下总结. 今天完成关静最后给的大project这个作业来说,结合自己的研究方向是个让我纠结一周多的事.好在找到了对应的研究内容. R的书目前还是很多的.R我一开始觉 ...

  5. 一般处理程序cookie和session+末尾的多选框,下拉框

    登录页面<body><form action="Login.ashx" method="post"><input type=&qu ...

  6. 利用第三方类 phpmailer 发邮件

    第一.百度一下 phpmailer 随便找个 girhub 网站 download 下来即可. 第二.复制如下代码放在项目根目录,填写完整你的账号信息,即可发送邮件.就是这么简单! <?php ...

  7. NodeJS学习笔记 (13)数据加密-crypto(OK)

    写在前面 本章节写得差不多了,不过还需要再整理一下(TODO). hash例子 hash.digest([encoding]):计算摘要.encoding可以是hex.latin1或者base64.如 ...

  8. NodeJS学习笔记 进阶 (6)本地调试远程服务器上的Node代码(ok)

    https://github.com/chyingp/nodejs-learning-guide

  9. js实现简易打点计时器

    很简单的实现一个打点计时器,规定从start至end,每次加1,每次打印间隔100ms,并且返回取消方法. 代码如下: //打点计时器,每间隔100毫秒+1 function count(start, ...

  10. NOIP2017 Day-1 模板荟萃

    #include<bits/stdc++.h> #define MAXN 100005 using namespace std; int read(){ ;char c=getchar() ...