设为首页 收藏本站
查看: 718|回复: 0

[经验分享] Tomcat 7 新特性学习之一

[复制链接]

尚未签到

发表于 2017-2-6 09:15:59 | 显示全部楼层 |阅读模式
  Tomcat 7 Beta版本出来已经有段时间了,看了JavaEye上的朋友,还是有几个非常勤奋每天都在学习的朋友,他们能够每天学习,坚持下来,实属不易,他们非常的年轻,有几个,我还见过面,小伙子们的好学精神实在让人敬佩。这个社会很浮躁,我自己也是这样,尤其在杭州这种城市里生活,会有一定的压力,毕竟人总是想要更好的生活:想买大大的房子,买个自己喜欢的车子,自己的小孩上学不用着急她的学费。做人的乐趣很多,真想好好的去外面旅游一番,小女儿也刚刚出生,为了去米国,早早地把她送回了老家,我很想她。期盼着公司赶紧定下来,我好回家呆上10几天,跟女儿好好的享受一下天伦之乐。
  现在上班不知道为什么特别反感,一上班就觉得没劲,不是因为自己没有激情,在公司里效率太低了,我很多的idea,都在家里想出来的。我是会自己压力的人,没办法,在这个社会生存除了兴趣之外,确实还是需要像愚公移山一样的精神,每天学习,每天进步,这样才能不会被社会所淘汰。公司里打工确实是不容易的事情,我们的项目早已ready,但是因为是跨国合作,想一个项目出去必须得各个方面都要准备好,这个是我一直担心的问题,部门的发展好坏就取决于此了,真不甘心如何真的就这样失败了,有时候就像和平年代的军队一般,没有战可打是痛苦的,做个军人死也要死在战场上。我的几个大领导是非常好的人,也是非常有经历的人,跟他们学了很多东西。
  我知道我自己的特点是什么,我是勤奋的人,好几个月没有学习,实在是让人有点心慌。想想写blog,还是很好的方式,既然要学习和总结,那就从比较新的Tomcat 7 的新特性学起吧。
1. Use of a Nonceto Prevent Cross-Site Request Forgery (CSRF) Attacks
  1) 什么是CSRF
  CSRF:Cross Site Request Forgery,跨站请求伪造,也被称作Session Riding,它的本质是利用你的合法身份,来发送恶意请求。CSRF能够做的事情包括:以你的名义发送电子邮件,发消息,盗取你的账号,甚至购买商品,虚拟货币转账,这些东西会给你造成财产安全和个人隐私泄露等威胁。
  CSRF攻击,早在2000年已经被国外的安全人员提出,但在国内,直到2006年才开始被关注,2008年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞。
  2) CSRF的工作原理及示例
  

DSC0000.jpg
  由上图可以看到,攻击者充分利用了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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-338069-1-1.html 上篇帖子: 从tomcat 迁移到 WebSphere 经验总结(修改) 下篇帖子: 《How Tomcat Works》翻译(9) 之 会话管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表