关于Session Fixation

  前两天我转了篇文章到pst的邮件列表,是关于在struts 2框架下重新生成session的,引起了一些讨论,我觉得有必要在这里提醒下程序员们,可能他们早就遗忘了这种威胁了。
  JSESSIONID Regeneration in Struts 2
  实际上这就是一种针对Session Fixation 的防范。
  Session Fixation 翻译过来就是 “Session 完成攻击”,以前的老的应用里可能比较常见这种问题,但是随着现在web应用越来越复杂,这种问题已经很少了。
  先理解这个攻击,打个比方:
  1. 你花钱买了一辆车
  2. 你把车钥匙复制了一把
  3. 你把这辆车卖给了一个冤大头
  4. 冤大头同学花钱买了辆2手车,结果在某天你趁他不在,用事先复制好的钥匙把车开走了!

  这个过程就是一个 Session Fixation 的过程,车钥匙就是 Session ID
  这类问题的本质在于:WEB应用在认证后没有改写或者更新session,从而导致了认证前的session还能使用。
  如果攻击者事先能够获知该session ID,则可以欺骗用户使用该session ID进行认证,认证后,由于session ID不变,但是该session变成了一个认证后的session,从而攻击者可以直接使用该session ID以用户身份通过系统的认证。
  在Web环境里,用户浏览页面时服务器会产生一个session,然后session ID会放在客户端,比如在浏览器URL里,或者是cookie里。用户持有这个session ID,服务器就可以找到他的session。用户输入用户名和密码后,系统对该session进行认证。认证成功,该session就是一个认证后的session,服务器就知道该用户认证过了,用户访问认证页面时就不再需要每次输入用户名和密码了。
  比如lqqm论坛,就是把session ID放在url里



 
  常见的利用 Session Fixation的方法一般是发送一个link到邮件里,诱骗用户点击后登录,使得该session通过认证,比如:
  http://www.fvck.com/auth?session=xxxxxxx
  要对抗这种攻击,很简单,就是 认证后重新生成一个session就可以了,甚至是 增改当前session都能起到这个目的。
  像lqqm论坛,在登录后马上就把session重写了。tomcat等也是如此。
  而现在大部分的网站、论坛等复杂的WEB应用,一般是把session ID放在cookie中,而用户登录后,cookie里一般会多很多东西,这些多出来的东西也可以保证用户不受sesssion fixation攻击的影响。
  不过,session fixation攻击作为一种漏洞类型,不仅仅局限于用户登录的部分,只要是任何需要“ 认证”的地方,都需要考虑到这种威胁。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值