一个固定的Session攻击通常发生在以下情况:
1.恶意用户访问一个web site,这个JSessionID被保存在浏览器的cookie里面,即便用户并没有登录改网站。这种情况下,他就可以伪造一个带有该JsessionID的URL,并发送给受害者。(例如, http://example.com/login?JESSIONID=qwerty)
2.受害者点这个带有jsessionid的URL,提示输入验证信息之后就登陆系统。
3.攻击者现在使用这个带jsessionid的链接,以受害者的身份登陆进系统了。
It
is trivial for the attacker to add a jsessionid in the URL as well as
to send it in the header using a malicious form. (For a full
description of session fixation attacks, read the whitepaper "Session Fixation Vulnerability in Web-based Applications
" from Acros Security.)
The
solution implemented by the Tomcat team is a patch that changes the
jsessionid after authentication. This patch has been applied to Tomcat
7 and has also been backported to Tomcat 5 and 6 with some differences.
According to Mark Thomas
, the results of this patch in Tomcat 7 are:
- Tomcat is not vulnerable by default because the session ID changes upon authentication.
- If
this default is changed by the user (e.g. because the application can't
handle a changing session ID), then the risks may be minimized by
disabling session tracking via URL (a new feature in Servlet 3).
And in Tomcat 5 and 6, the results of the patch are:
- Session
fixation attacks can be prevented by enabling Tomcat to change the
session ID on authentication (if there is insufficient support for this
to be enabled by default).
- If the application can't handle a changing session ID then the risks may be minimized by writing a custom filter that checks
request.isRequestedSessionIdFromURL()
and responds accordingly (e.g. rejecting the request).
The
above changes work transparently behind the scenes; the developer does
not have to do anything. The users session (jsessionid) is changed
after login. This completely prevents session fixation attacks
分享到:
相关推荐
标题 "Tomcat7+Redis+Session 负载之后session 共享 tomcat jar包" 涉及的是在使用Nginx做负载均衡时,如何通过集成Redis来实现Tomcat7服务器之间的Session共享,从而确保用户在不同服务器之间切换时仍然能够保持...
IP相同的两个session对应的cookie是一样的,而不幸的是sessionID就保存在cookie中,这样先访问A,再访问B的时候,B的sessionid会覆盖A的sessionid。这个事情没办法解决,所以你不要搞两个端口,最好是搞两个IP。原来...
标题中的“tomcat7+session共享(mencache)”指的是在Tomcat 7版本中实现基于Memcached的Session共享。在分布式系统中,由于用户在不同服务器之间切换时需要保持会话状态,所以Session共享成为了一个重要的问题。...
总结来说,Tomcat中的Session是通过Session ID(JSESSIONID)作为标识,结合Cookie在客户端和服务器之间传递,实现对用户会话状态的跟踪。了解这些原理对于优化Web应用性能、处理会话管理问题以及确保用户安全性至关...
在本主题“tomcat7_redis_Session共享所需jar包及使用方法”中,我们将探讨如何利用Redis这一高性能的键值存储系统来实现Tomcat 7中的Session共享,以满足集群部署的需求。 首先,Redis作为一个内存数据结构存储...
在session共享的场景下,Tomcat服务器会将用户的session数据存储到Redis中,而不是本地的JSESSIONID,这样无论用户请求哪个Tomcat实例,都可以从Redis中获取到相应的session信息。 在实际操作中,我们需要进行以下...
Tomcat作为广泛使用的Java应用服务器,提供了多种方式来实现Session共享,其中一种就是通过集成Redis来管理Session。本篇将详细讲解在Tomcat 8及以上版本中,如何利用`tomcat-redis-session-manager`实现基于Redis的...
在构建高可用的Web应用程序时,常常需要处理session共享的问题,特别是在使用Tomcat作为应用服务器并部署成集群的情况下。本文将详细讲解如何在Tomcat 8.5.38版本中实现基于Redis的session共享,以及所需的jar文件和...
本主题将详细介绍如何通过Nginx、Tomcat8和Redis来实现Tomcat8集群中的Session共享。 首先,理解Session共享的重要性。Session是Web应用中用来跟踪用户状态的一种机制,它存储了用户登录信息、购物车内容等关键数据...
3. **使用cookie**:在cookie中存储session ID,每次请求时携带,Apache通过stickysession指令将请求定向到对应的Tomcat实例。 通过以上配置,我们可以构建一个高可用、负载均衡的Web服务系统。在实际操作中,还...
每个session都有一个唯一的ID(JSESSIONID),当配置了domain,这个ID会带有特定的域名前缀,使得不同域名的session能够被正确区分,防止冲突。 现在,我们进入重点,如何使用`redis-session`来实现session的存储和...
2. **配置Tomcat的Session Manager**:在Tomcat的`conf/context.xml`或应用的`WEB-INF/web.xml`中,配置`Manager`元素来使用`org.apache.catalina.session.PersistentManager`。添加以下属性: ```xml ...
如果没有找到或未解析出sessionId,`doGetSession`方法会被调用来创建一个新的session,并赋予新的sessionId。 新的sessionId生成逻辑位于`SessionIdGenerator`类的`generateSessionId`方法中,该方法确保生成的每...
配置下context.xml即可使用”,这个过程是将Redis Session管理的相关jar包添加到Tomcat的类库中,并在Tomcat的配置文件`context.xml`中进行相应的设置,使得Tomcat能够识别并使用这个新引入的Session管理机制。...
在实际开发中,还需要注意安全性,防止Session劫持和Session固定攻击。 总结来说,共享Session通过将Session数据存储在Redis这样的集中式存储中,解决了分布式环境下的会话连续性问题。具体实现可以选择Spring ...
### Tomcat配置详解 在Java Web开发领域,Apache Tomcat是一款非常重要的服务器软件,它不仅支持Servlet技术,还能够运行Web应用程序。对于开发者而言,掌握...希望本文能对正在学习Tomcat配置的初学者有所帮助!
Manager使用一个`ConcurrentHashMap`来存储Session对象,键是SessionId,值是Session对象本身。 Tomcat提供了两种Manager的实现: - **StandardManager**:在运行时将Session存储在内存中,并在正常关闭时将Session...