設置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的算法,或者自己實現相關部分等 等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM