关于Session 生命周期的安全分析

  Session 生命周期(从创建到销毁)

  1、session的默认过期时间是30分钟,可修改的最大时间是1440分钟(1440除以60=24小时=1天)。

  2、服务器重启或关闭Session失效。

  分析:

  session 用于跟踪浏览器 与 服务器交互的,HTTP协议是种无状态的请求响应协议,每一次请求响应结束后都会断开,这使得服务器没法知道这时的用户是曾经的哪一个。引用了session弥补了这一缺陷,客户端和服务器在第一次认证后服务器和客户端都会存下服务器给客户端产生的唯一的一个sessionID 用于标识和某一个用户的交互会话。此后的交互中,只要服务器端的session还在,客户端只需提供这个同样的session ID 服务器就知道它正在和谁交互了! cookie 的存在也是为了解决如此的问题,二者各有差异,各有优劣之处。cookie存在于客户端本地文件里,每一次用户打开浏览器请求服务器时,浏览器就会把属于这个服务器的cookie信息带上,一同请求服务器,服务器从cookie信息中分析确认来者何人,然后做出该有的响应。cookie存在客户端一方,sessionID存在于服务器和客户端两方。客户端的cookie一旦被别人盗用,服务器完全不知道,没法保障用户的信息安全。sessionId生命周期过长,一旦客户端sessionId被盗用也会出现cookie被盗一样的给用户带来的危害;当用户量很大的时候,session会占服务器内存很大资源,使得服务器性能降低,cookie只会占用用户本地磁盘资源;

  session在服务器手动销毁以及服务器重启或关闭时失效,关闭浏览器,只是客户端的session不在了,服务器端还依然保留着和用户的会话凭证的;

  Xss盗取的也许是(sessionId(Java里面叫(sessionId),而不只是cookie。那么假设我们的Session被设置得特别长那么这个SessionId就会长时间的保留,而为Xss攻击提供了得天独厚的条件。而这种Session长期存在会浪费服务器的内存也会导致:SessionFixation攻击!

  分析:

  (盗取sessionid,利用这个服务器认证成功的sessionId欺骗服务器进行操作。)我以为这是攻击目标服务器,使得目标服务器内存溢出,以至崩溃哟!!因为,服务器会把用户的sessioID存放在内存,当用户会话很多时,可能会把内存耗尽!!

  百度后知道:

  Session fixation attack(会话固定攻击)是利用服务器的session不变机制,借他人之手获得认证和授权,然后冒充他人。如果应用程序在用户首次访问它时为每一名用户建立一个匿名会话,这时往往就会出现会话固定漏洞。然后,一旦用户登录,该会话即升级为通过验证的会话。最初,会话令牌并未被赋予任何访问权限,但在用户通过验证后,这个令牌也具有了该用户的访问权限。

  SessionFixation攻击的防范:

  1、用户输入正确的凭据,系统验证用户并完成登录,并建立新的会话ID。-(销毁之前的SessionID)

  2、Session会话加Ip控制,防止别人盗取session后,异地登陆。就像QQ发生异地登陆时,就需要再次验证身份处理一样;

  3、加强程序员的防范意识!书写代码中要有防范xxs攻击意识;

  注意:

  当我们关闭服务器时Tomcat会在安装目录workCatalinalocalhost项目名目录下建立SESSIONS.ser文件。此文件就是Session在Tomcat停止的时候 持久化到硬盘中的文件. 所有当前访问的用户Session都存储到此文件中. Tomcat启动成功后.SESSIONS.ser  又会反序列化到内存中,所以启动成功后此文件就消失了. 所以正常情况下 从启Tomcat用户是不需要登录的. 注意有个前提,就是存储到Session里面的user对象所对应的User类必须要序列化才可以。来自于: http://alone-knight.iteye.com/blog/1611112

  分析: 关闭服务器时,Tomcat服务器还这么人性化啊???

  我还没有测试出来,没看到这个效果!不过这么做确实很人性化,很可取的!!用户体验比较好,想起了今天看到的微博-好的用户体验往往造成了不好的安全隐患,一旦黑客攻破了服务器,比如:通过一些漏洞上传了一句话木马用菜刀连了上去,因为服务器数据库比较隐蔽,安全很好,黑客没法搞定数据库拿到用户管理员资料。这个时候,黑客只需要静等站点活动用户量大的时候,攻击让目标服务器崩溃重启,然后像上面这个Tomcat服务器的把用户seeion序列化到文件,黑客只需要拿到这个序列化后的包含用户信息的文件,然后download到本地,自己写代码反序列化然后就得到了活跃用户的登录帐号信息了!!

 

发表评论

邮箱地址不会被公开。 必填项已用*标注