`

Tomcat 7 新特性学习之一 - 防止CSRF攻击

阅读更多

Tomcat 7 Beta版本出来已经有段时间了,看了JavaEye上的朋友,还是有几个非常勤奋每天都在学习的朋友,他们能够每天学习,坚持下来,实属不易,他们非常的年轻,有几个,我还见过面,小伙子们的好学精神实在让人敬佩。这个社会很浮躁,我自己也是这样,尤其在杭州这种城市里生活,会有一定的压力,毕竟人总是想要更好的生活:想买大大的房子,买个自己喜欢的车子,自己的小孩上学不用着急她的学费。做人的乐趣很多,真想好好的去外面旅游一番,小女儿也刚刚出生,为了去米国,早早地把她送回了老家,我很想她。期盼着公司赶紧定下来,我好回家呆上10几天,跟女儿好好的享受一下天伦之乐。

 

现在上班不知道为什么特别反感,一上班就觉得没劲,不是因为自己没有激情,在公司里效率太低了,我很多的idea,都在家里想出来的。我是会自己压力的人,没办法,在这个社会生存除了兴趣之外,确实还是需要像愚公移山一样的精神,每天学习,每天进步,这样才能不会被社会所淘汰。公司里打工确实是不容易的事情,我们的项目早已ready,但是因为是跨国合作,想一个项目出去必须得各个方面都要准备好,这个是我一直担心的问题,部门的发展好坏就取决于此了,真不甘心如何真的就这样失败了,有时候就像和平年代的军队一般,没有战可打是痛苦的,做个军人死也要死在战场上。我的几个大领导是非常好的人,也是非常有经历的人,跟他们学了很多东西。

 

我知道我自己的特点是什么,我是勤奋的人,好几个月没有学习,实在是让人有点心慌。想想写blog,还是很好的方式,既然要学习和总结,那就从比较新的Tomcat 7 的新特性学起吧。

 

1. Use of a Nonce to Prevent Cross-Site Request Forgery (CSRF) Attacks

1) 什么是CSRF

CSRF:Cross Site Request Forgery,跨站请求伪造,也被称作Session Riding,它的本质是利用你的合法身份,来发送恶意请求。CSRF能够做的事情包括:以你的名义发送电子邮件,发消息,盗取你的账号,甚至购买商品,虚拟货币转账,这些东西会给你造成财产安全和个人隐私泄露等威胁。

 

CSRF攻击,早在2000年已经被国外的安全人员提出,但在国内,直到2006年才开始被关注,2008年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞。

 

2) CSRF的工作原理及示例



由上图可以看到,攻击者充分利用了trusted site在用户登录以后,包含sessionID的Cookie一直保存在客户的PC上,当危害站点B发送给用户包含恶意请求的URL时,用户点击后,不用再登陆site A,因为cookie一般保存在http head里,发送给SiteA的所有请求,cookie值都会包含在之后的request里面。如果恶意请求是删除用户资料,修改用户资料等操作时,损失可能就是致命的。

 

典型案例如下:

I. 用户a访问并登录银行网站A:http://www.asite.com

 

A site 以get请求可以进行转账服务:

http://www.asite.com/transferMoney.do?toBankAccountID=112233&amount=1000

上面URL表示,向账号ID112233转账1000


II. 在用户a仍然登录状态时,恶意站点B给用户a发送电子邮件,邮件里有url:

<a href="http://www.asite.com/transferMoney.do?toBankAccountID=112233&amount=1000">click</a>

 

III. 用户a点击URL,扣款请求发生,a账号里面的钱就少了1000块钱

 

3) Tomcat 7是如何避免CSRF的

传统的防止CSRF攻击的方法是使用一个随机数(nonce),如果Wikipedia中定义的:在验证协议中,使用一个随机数以确保原来的通信不能被重用。

 

Tomcat7定义了一个servlet过滤器,它在每一次request请求处理后,在session中存储了一个随机数。这个随机数必须在随后的请求中作为请求参数。这个Servlet filter会在服务器端检查请求中的随机数是否和存储在user session中的随机数相同。如果相同,则这个请求只能从指定的站点而来。如果不相同,则这个请求是别的站点来的,因此会被拒绝。

 

这个Servlet过滤器很简单,下面是相关的源代码片段:

 

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必须在用户回话中包含一个随机数,下面是一个例子:

 

没有包含随机数的URL:

 

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

 

包含随机数的URL:

< 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 >< a href="${show}">Show< /a >

 

 

参考资料

1.http://wenku.baidu.com/view/9fe72df8941ea76e58fa041b.html

 

  • 大小: 29.4 KB
分享到:
评论

相关推荐

    apache-tomcat-7.0.52.rar

    - 强化了安全管理,包括加强了对跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的防护。 3. **Windows环境配置** - 解压缩:首先,将"apache-tomcat-7.0.52.rar"解压缩到你选择的目录,例如"C:\Tomcat"。 - 配置...

    apache-tomcat-8.0.20-windows-x86.zip

    在Apache Tomcat 8中,最显著的变化之一是全面支持Java EE 7标准。这包括对WebSocket API的增强,使得开发者可以创建实时双向通信的应用程序,如在线聊天和协同编辑工具。此外,它还增强了JSP(JavaServer Pages)和...

    tomcat8.5.59

    1. 安全性更新:8.5.59版本修复了一些安全漏洞,包括防止跨站请求伪造(CSRF)攻击,提升了服务器的安全性。 2. 性能优化:对内存管理和线程调度进行优化,减少了不必要的资源消耗,提升了整体性能。 3. 配置改进...

    Java-tomcat-7.0

    【Java-tomcat-7.0】是一款基于Java技术的Web服务器和应用服务器,其核心是Apache Tomcat,这是Apache软件基金会的Jakarta项目的一部分。Tomcat 7.0.82是该系列的一个重要版本,它在稳定性和安全性方面进行了多方面...

    apache-tomcat-8.0.30

    6. **配置更新**:Tomcat的默认配置文件进行了调整,以提供更好的安全性,比如默认关闭AJP协议,防止跨站请求伪造(CSRF)攻击。 7. **错误处理和日志**:改进了错误页面的处理,提供了更丰富的错误信息,同时对...

    apache-tomcat-8.0.39.tar.gz

    在安全方面,Tomcat 8.0.39修复了多个安全漏洞,例如防止跨站请求伪造(CSRF)攻击、限制默认端口以避免端口扫描等。为了保持最佳的安全性,建议用户定期更新到最新版本。 此外,Tomcat 8引入了NIO.2和 APR(Apache...

    apache-tomcat8.0.29

    4. **安全增强**:此版本包含了安全补丁,修复了多个潜在的安全漏洞,包括防止跨站请求伪造(CSRF)攻击,强化密码存储和传输,以及对HTTP头部注入的防护。 5. **性能优化**:Tomcat 8.0.29进行了多方面的性能优化...

    apache-tomcat-8.0.48linux解压版

    2. **安全性增强**:此版本修复了多个安全漏洞,以防止潜在的攻击,例如跨站脚本(XSS)、跨站请求伪造(CSRF)和远程代码执行等。保持Tomcat的更新对于确保服务器的安全性至关重要。 3. **Java EE 7支持**:Tomcat...

    apache-tomcat-7.0.41_x64

    安全方面,Tomcat 7.0.41修复了一些已知的安全漏洞,例如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。此外,它还增强了对HTTPS的支持,允许更安全的通信,特别是对于处理敏感用户数据的Web应用。 性能上,...

    jakarta-tomcat-5.5.8

    3. 安全性增强:此版本对安全方面进行了加强,包括升级了SSL/TLS的支持,增强了防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的能力。 4. 管理工具改进:提供了更方便的管理界面,如Manager和Host Manager应用,...

    apache-tomcat-8.0.17.zip

    4. **改进的安全性**:这个版本包含了对安全漏洞的修复,提高了服务器的安全性,比如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。 5. **性能优化**:Tomcat 8.0.17包含了一些性能提升,例如更快的HTTP/1.1解析器和...

    tomcat8资源下载链接tomcat8

    在安全方面,Tomcat 8.5.3修复了多个安全漏洞,包括防止跨站请求伪造(CSRF)、拒绝服务攻击和其他潜在的安全风险。因此,及时更新到最新版本是保持服务器安全的关键。 此外,Tomcat 8引入了新的特性,例如: - **NIO...

    最新Tomcat6.0.24

    3. **安全性**:Tomcat 6.0.24修复了多个安全漏洞,包括防止跨站脚本(XSS)攻击、跨站请求伪造(CSRF)和其他潜在的安全威胁。这确保了在服务器上的应用程序能在一个相对安全的环境中运行。 4. **性能优化**:此版本...

    tomcat-6.0.29 64位版本

    5. **安全性增强**:此版本修复了多个安全漏洞,包括防止跨站请求伪造(CSRF)攻击、防止目录遍历攻击等,保障了服务器的安全性。 6. **管理和监控工具**:Tomcat提供了一个内置的管理界面(Manager App)和一个...

    apache-tomcat-7.0.19

    这个"apache-tomcat-7.0.19"版本是Tomcat 7系列的一个稳定发行版,它在发布时提供了可靠的服务和性能优化。 Tomcat 7.0.19包含了多个关键特性,旨在提高性能、安全性和稳定性。首先,它支持Java EE 6 Web Profile,...

    tomcat httpHeaderSecurity.jar

    标题中的"tomcat httpHeaderSecurity.jar"指的是Apache Tomcat服务器中的一个安全相关的组件,它用于增强HTTP头部的安全性。...了解并正确配置这些安全特性是每个负责运行Tomcat服务器的管理员应该掌握的关键技能。

    tomcat 1.6

    5. **更好的安全特性**:6.0.18版本包含了一些安全修复,提升了服务器的安全性,包括防止跨站请求伪造(CSRF)和SQL注入等攻击。 **Tomcat配置与管理:** - **server.xml**:这是Tomcat的核心配置文件,用于设置...

    ajp13 tomcat 和iis整合

    4. **安全性考虑**:整合过程中需要关注安全问题,如防止跨站请求伪造(CSRF)和中间人攻击。可以通过设置合适的防火墙规则和加密连接来增强安全性。 5. **性能优化**:可以通过调整AJP13的连接池大小、超时设置和...

    tomcat7.0.84

    Tomcat 7.0.84包含了多个安全修复,以防止潜在的攻击,如跨站脚本(XSS)、跨站请求伪造(CSRF)等。此外,该版本还支持SSL/TLS协议,可以配置HTTPS连接,为Web应用提供加密通信,保护用户数据的隐私。 配置和管理...

    tomcat技术手册

    3. AJP连接器:用于和其他Web服务器进行通信,但需注意安全配置,防止跨站请求伪造(CSRF)攻击。 总结,《Tomcat技术手册》覆盖了从安装、配置到应用部署、性能优化的全过程,是学习和掌握Tomcat的理想资源。通过...

Global site tag (gtag.js) - Google Analytics