`
123003473
  • 浏览: 1060305 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

配置TOMCAT SESSIONID 字符长度和生成算法

 
阅读更多
修改TOMCAT 默认的生成SESSION ID的算法和字符长度非常简单,只需修改context.xml中的<Manager>标签值,比如:

<Manager

sessionIdLength="20"

pathname="SESSIONS.ser"

maxActiveSessions="8000"

secureRandomAlgorithm="SHA1PRNG"

secureRandomClass="java.security.SecureRandom"

maxInactiveInterval="60"

/>

标红的部分不用我说大家也应该知道了,算法除了SHA1PRNG还有好几种,具体可以查看 JDK DOC的java.security.SecureRandom类章节.

更多配置见:http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html

TOMCAT默认的SESSIONID生成器在高并发下可能产生些性能损失,因为采用了较为安全的随机数来生成SESSION的ID值。

实际上TOMCAT生成的SESSIONID是不可能有重复值的,查看TOMCAT源码文件:ManagerBase.java中的以下代码

    /**

     * Generate and return a new session identifier.

     */

    protected String generateSessionId() {

        String result = null;

        do {

            if (result != null) {

                duplicates++;

            }

            result = sessionIdGenerator.generateSessionId();

        } while (sessions.containsKey(result)); //此处保证最终生成给客户端使用的SESSIONID一定是不重复的

        return result;

    }

所以,不必担心SESSIONID的安全性,如果有更好的实现,可以修改相应代码用于特定项目中。

因此我们可以修改TOMCAT源码中的SessionIdGenerator.java生成ID的函数部分,比如采用java.util.UUID+java.util.Random+(随机字符串)来构建更高效的生成SESSIONID的算法,或者自己实现相关部分等等。

修改编译TOMCAT源码将在以后的BLOG中谈到。
分享到:
评论
2 楼 aaa5131421 2015-02-02  
其实当时不明白的话你当时就应该想到:这些写服务器代码的人都是久经沙场了,他们难道不知道性能有问题么,明明已经不可能重复了为啥还弄着这么复杂的东西出来呢?没有特殊的原因人家会这么干么~~~~~
1 楼 aaa5131421 2015-02-02  
人家用复杂的session id生成策略并不是为了防止重复,而是为了防止session id被猜测进而进行伪造攻击

相关推荐

    tomcat修改sessionId

    tomcat修改sessionId,同一台服务器部署多个tomcat需要修改sessionId,否则会出现session冲突的问题

    设定tomcat中session过期时间.txt

    - 在Tomcat的配置文件`server.xml`中,可以通过设置`Context`元素下的`defaultSessionTimeout`属性来指定整个应用服务器范围内Session的默认超时时长。 - 这种方式适用于希望对所有部署在该Tomcat实例上的Web应用...

    tomcat session存到mencache

    5. **测试与优化**:完成配置后,重启Tomcat并进行测试,确保session数据能正确地在Memcache中创建、读取和删除。还可以根据实际情况调整Memcache的缓存策略,如设置合适的生存时间(TTL)和内存大小。 通过将...

    tomcat-session共享

    Nginx可以通过配置将Session ID传递给Tomcat,Tomcat再根据ID从Redis中获取Session信息。这样即使服务器发生故障,Session数据也不会丢失。 **4. 使用Redis作为Session存储** 文件名“tomcat-redis-session”暗示了...

    tomcat-redis-session-manager实现session共享 配置文件

    1. **Session创建与更新**:当用户请求到达服务器时,如果创建或更新Session,Tomcat-Redis-Session-Manager会将Session对象序列化为字节数组,然后存储到Redis中,键为服务器生成的唯一Session ID。 2. **Session...

    tomcat8配置session共享所需jar包

    因为Session对象是Java对象,而Redis只支持基本类型和字符串,所以Session对象需要被序列化和反序列化。Tomcat Redis Session Manager默认使用Java内置的序列化机制,但也可以通过配置自定义的序列化器。 6. **...

    Memcached+tomcat session共享jar 和tomcat xml配置

    本篇将深入探讨如何使用Memcached实现Tomcat的Session共享,并基于提供的jar文件和Tomcat的XML配置进行详细讲解。 首先,我们需要理解Memcached的工作原理。Memcached是一个基于内存的键值对存储系统,用于临时存储...

    tomcat+nginx配置session共享

    tomcat配置session共享,亲试过tomcat 7.0.82版本。提供了三个依赖的jar,拷贝到tomcat的lib下面。修改content.xml文件。里面有案例。

    tomcat redis session.rar

    【标题】:“Tomcat Redis Session”指的是在Tomcat集群环境中,通过Redis来实现Session的共享与同步,以解决集群中的Session一致性问题。 【描述】:“Tomcat集群Nginx使用Redis保证Session同步”这一场景中,通常...

    tomcat+nginx+redis 实现sessionId共享 实例

    这个实例“tomcat+nginx+redis 实现sessionId共享”旨在教你如何在使用Tomcat作为应用服务器、Nginx作为反向代理服务器的环境中,利用Redis来实现跨服务器的会话(sessionId)共享。这对于在分布式系统中保持用户...

    myeclipse配置tomcat服务器

    值得注意的是,虽然本教程专注于MyEclipse和Tomcat的配置,但这一原理同样适用于其他IDE和Web服务器的组合,例如IntelliJ IDEA与Jetty的配合使用。 总之,正确配置MyEclipse与Tomcat对于Java Web开发至关重要,它...

    Tomcat安装和配置教程

    tomcat安装及配置教程Tomcat安装和配置教程Tomcat安装和配置教程Tomcat安装和配置教程Tomcat安装和配置教程Tomcat安装和配置教程Tomcat安装和配置教程Tomcat安装和配置教程Tomcat安装和配置教程Tomcat安装和配置教程...

    nginx实现多个tomcat7直接session共享所需jar包

    2. 在Tomcat的`web.xml`配置文件中添加Session复制的相关配置,例如,引入Redis Session Manager的jar包,并配置相关的session-store-dir和manager类。 3. 配置Nginx,使用上游服务器块(upstream)定义Tomcat实例,...

    tomcat5 session 复制

    总结起来,Tomcat5 的 Session 复制通过集群配置和 Web 应用配置两方面实现,确保了分布式环境下的会话一致性。配置过程中需注意端口冲突、网络可达性以及正确设置复制策略,以达到高效且稳定的 Session 同步效果。

    tomcat-redis配置session共享

    通过以上步骤,你已经成功配置了Tomcat和Redis,实现了Session在多个Tomcat实例间的共享,提升了系统的可扩展性和可用性。在后续的维护和优化过程中,继续关注性能、安全和用户体验,确保系统的稳定运行。

    Memcached-Session-Manager多tomcat实现session共享配置

    在实际部署时,还需要将相关的jar包(例如:`memcache-session-manager.jar`和依赖的transcoder库)添加到Tomcat的`lib`目录,以便Tomcat能够识别和使用这个Session Manager。 此外,配合使用文档,可以更深入地...

    Tomcat8(Tomcat9)+redis实现Session共享(支持Redis集群)

    Tomcat作为最常用的Java Servlet容器,其Session管理能力直接影响到应用的性能和可扩展性。本教程将详细介绍如何利用Tomcat 8或9以及Redis实现Session共享,支持Redis集群,以提高系统的可伸缩性和数据一致性。 ...

    Eclipse 配置 Tomcat 详细教程

    eclipse配置tomcat:Eclipse 配置 Tomcat 详细教程; eclipse配置tomcat:Eclipse 配置 Tomcat 详细教程; eclipse配置tomcat:Eclipse 配置 Tomcat 详细教程; eclipse配置tomcat:Eclipse 配置 Tomcat 详细教程; ...

    Tomcat_Session的持久化

    Tomcat_Session 的持久...Tomcat 提供了 StandardManager 和 PersistentManager 两个实现类来管理 Session,其中 PersistentManager 能够把 Session 对象保存到 Session Store 中,提供了更为灵活的 Session 管理功能。

    Tomcat8 session同步测试,配置好的Tomcat

    总的来说,Tomcat8的session同步是通过集群配置实现的,涉及通道、管理器、部署器和阀门等多个组件。理解并正确配置这些部分对于构建高可用性和高扩展性的分布式Web服务至关重要。在测试过程中,要确保所有节点都能...

Global site tag (gtag.js) - Google Analytics