tomcat7的新功能特性



Tomcat的7引入了许多新功能,并对现有功能进行了增强。很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们,或指出它们的不足,或提供代码示例。本文将明确描述TOMCAT 7中七个最显著的特征和新增的功能,并对其作出评论,而不是仅仅列出新的功能。本文还提供了代码例子以方便你可以对其有更好的理解。

  本文分为两个部分,分别是”TOMCAT 7的新特性”和“TOMCAT 7增强的功能“。

  TOMCAT 7新特性

  1 使用随机数去防止跨站脚本攻击。

  2 改变了安全认证中的jessionid的机制,防止session攻击。

  3 内存泄露的侦测和防止

  4 在war文件外使用别名去存储静态内容。

  TOMCAT 7的增强功能

  5 对Servlet 3.0,JSP 2.2和JSP-EL 2。2的支持

  6 更容易将Tomcat内嵌到应用去中去,比如JBoss

  7 异步日志记录

  根据Mark Thomas,Tomcat 7委员会的经理的说法,Tomcat 7最显著的三个特征是Servlet 3.0,内存检测泄露和增强的安全特性。

  Tomcat 7的例子程序中,包含了Eclipse的工程文件和Ant的构建文件,以方便去构建war文件。其中Eclipse工程文件有例子代码描述了Tomcat 7的一些新特性。

  下面逐一开始介绍。

  TOMCAT 7新特性

  1使用随机数去防止跨站请求伪造攻击。

  Wikipedia将跨站请求伪造攻击(Cross Site Request forgery,CSRF)定义为:“一种影响Web应用的恶意攻击。CSRF让用户当进入一个可信任的网页时,被强行执行恶意代码。

  经典的防止CSRF攻击的方法是使用随机数的方式,Wikipedia中定义为“利用随机或伪随机数嵌入到认证协议中,以确保旧的不能在以后的重放攻击中被利用。”

  Tomcat 7中有一个servlet过滤器,用于将随机数存储在用户每次请求处理后的seesion会话中。这个随机数,必须作为每次请求中的一个参数。 Servlet过滤器然后检查在请求中的这个随机数是否与存储在用户session中的随机数是一样的。如果它们是相同的,该请求是判断来自指定的网站。如果它们是不同的,该请求被认为是从其他网站发出并且会被拒绝。

  这个servlet过滤器是十分简单的,下面是从TOMCAT 源代码CsrfPreventionFilter文档中摘录的片段:

public class CsrfPreventionFilter extends FilterBase {

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

String previousNonce = req.getParameter(Constants.CSRF_NONCE_REQUEST_PARAM);
String expectedNonce = (String) req.getSession(true).getAttribute(Constants.CSRF_NONCE_SESSION_ATTR_NAME);

if (expectedNonce != null && !expectedNonce.equals(previousNonce)) {
res.sendError(HttpServletResponse.SC_FORBIDDEN);
return;
}

String newNonce = generateNonce();
req.getSession(true).setAttribute(Constants.CSRF_NONCE_SESSION_ATTR_NAME, newNonce);

  所以每个URL地址中都有一个从用户session中提取的随机数,下面是使用的JSTL例子:

  在以前,JSTL中构造链接可以这样:

< c:url var="url" value="/show" >
< c:param name="id" value="0" / >
< /c:url >
< a href="${show}" >Show< /a >

  而现在可以这样:

< c:url var="url" value="/show" >
< c:param name="id" value="0" / >
< c:param name="org.apache.catalina.filters.CSRF_NONCE" value="${session.org.apache.catalina.filters.CSRF_NONCE}" / >
< /c:url >


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值