`

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的算法,或者自己实现相关部分等 等。

参考:https://zhidao.baidu.com/question/918631293708871579.html
http://www.cnblogs.com/hibernate3-example/archive/2012/05/09/2492796.html
分享到:
评论

相关推荐

    ASP.NET SessionId.rar

    1. **会话创建**:当用户首次访问ASP.NET应用程序时,如果没有现有的SessionId,服务器会生成一个新的SessionId。这个过程通常在用户访问的第一个ASP.NET页面时发生。 2. **存储SessionId**:生成的SessionId被发送...

    基于 Session ID 和 Session ticket 的会话恢复的抓包示例

    在网络安全和Web应用程序中,会话管理是至关重要的部分,它确保了用户在与服务器交互时的安全性和连续性。会话恢复是其中的关键技术,它允许用户在重新连接时无需重新登录,从而提供了更好的用户体验。本篇文章将...

    微信小程序用户登录、注册、SESSION同步、交互等

    - **后续请求携带SESSION**:之后小程序的每次请求,都会将这个SESSION ID作为请求头的一部分发送,服务器根据SESSION ID识别用户身份并提供个性化服务。 4. **交互处理**: - **页面跳转**:如果微信小程序打开...

    PHP程序设计-3期(KC016) 3.12.3 session课后习题.doc

    如果没有找到,可能是因为Session超时或者被手动清除,此时服务器可能会重新生成一个新的Session ID,并将新的数据存储在服务器端。 3. **Session数据存储**: 在服务器端,Session数据通常以键值对的形式存储在一...

    验证码的session问题

    在Web应用中,当用户请求验证码时,服务器会生成验证码并将其存储在Session中,同时将验证码的ID(通常是一个唯一的Session ID)发送给客户端,通常以Cookie的形式。客户端在填写验证码后,将验证码ID和用户输入的...

    一个基于 ASP.Net的进行Session 处理的高级技巧程序例子代码

    随后,每次用户请求新的页面,这个SessionID会被发送回服务器,服务器根据SessionID找到相应的Session数据。 在ASP.NET中,可以使用`Session`对象来存取Session数据。例如,你可以这样设置Session变量: ```csharp...

    C#获取微信小程序openid等用户信息(前端+asp.net服务器端代码)

    - 接收到前端发送的code后,服务器需要调用微信的`sns.code2Session`接口,这个接口需要你的小程序AppID和AppSecret,以及前端传来的code。 - 使用C#编写HTTP请求,向微信API发送POST请求,携带AppID、AppSecret和...

    URL中允许携带sessionid带来的安全隐患分析

    session机制中,服务器会为每个用户生成一个唯一的标识符,即sessionid,这个标识符会存储在用户的浏览器中。当用户再次访问服务器时,浏览器会带着这个sessionid,服务器通过它识别用户的唯一身份。如果浏览器禁用...

    session介绍

    如果客户端支持Cookie,服务器会将Session ID作为一个名为"SESSIONID"(或其他类似名称)的Cookie发送给浏览器。如果客户端禁用了Cookie,服务器则可能通过在URL后面附加Session ID(如`...

    有关session

    2. 服务器接收到请求后,如果发现客户端未携带Session ID,则创建一个新的Session,并生成一个唯一的Session ID。 3. 服务器将Session ID返回给客户端,客户端通常以Cookie的形式保存。 4. 客户端后续的请求都会携带...

    java web session跨域共享(redis)

    Session是Web服务器用于跟踪用户状态的一种机制,服务器会在客户端生成一个唯一的Session ID,并将其通过Cookie返回给浏览器。之后,每次请求时,浏览器都会携带这个Session ID,服务器通过这个ID找到对应的Session...

    理解session机制

    因此,应确保Session ID的生成足够随机,不易预测,并且在服务器端定期更换Session ID以增加安全性。 8. **跨域与Session**: 默认情况下,Session是基于域名的,这意味着同一域名下的不同子域名可以共享Session,...

    Session

    1. 用户首次访问网站时,服务器生成一个Session ID,通常是一个随机字符串。 2. 服务器将Session ID作为Cookie发送回给客户端,Cookie中包含Session ID以及过期时间等信息。 3. 客户端在后续的每次请求中都将这个...

    ASP.NET WebService中使用ASP.NET_SessionId的问题说明

    ASP.NET_SessionId是一个由ASP.NET生成的唯一标识符,用于跟踪用户的会话状态。在用户首次访问网站或Web服务时,服务器会为该用户分配一个ASP.NET_SessionId,并通过Set-Cookie HTTP响应头将其发送给客户端。这个...

    php中session_id()函数详细介绍,会话id生成过程及session id长度

    $sessionId = session_id(); echo '当前会话ID为: ' . $sessionId; // 存储和读取会话数据 $_SESSION['username'] = 'John Doe'; echo '用户名: ' . $_SESSION['username']; ?&gt; ``` 在这个例子中,首先我们通过 `...

    java Session cookie

    1. 用户首次访问服务器时,服务器创建一个新的Session,并生成一个唯一的Session ID。 2. 服务器将这个Session ID封装在Set-Cookie响应头中,返回给客户端。 3. 浏览器接收到这个响应后,会将Session ID以Cookie的...

    session简介.doc

    开发者需要合理设置session的生命周期,使用安全的session ID生成策略,并考虑跨应用程序的session共享。 **六、跨应用程序的session共享** 在多应用环境中,有时需要共享session数据。这可以通过将session存储在...

    Video9.Demo1.Session

    - 服务器生成一个唯一的Session ID,并将其发送给客户端。 - 客户端通常将Session ID保存在Cookie中,然后在每个HTTP请求中都将这个ID发送回服务器。 - 服务器接收到请求时,通过Session ID找到对应的Session对象...

    javaweb用户验证码登录session例子

    在Java Web开发中,用户登录验证是不可或缺的一部分,而在这个"javaweb用户验证码登录session例子"中,我们将深入探讨如何结合验证码、用户密码以及Session技术来实现安全的登录过程。Session是Web应用中用于跟踪...

Global site tag (gtag.js) - Google Analytics