如何覆盖Spring Websockets中的sessionId生成器?

时间:2016-07-22 19:01:29

标签: spring websocket spring-websocket

有没有办法覆盖Spring websocket集成附带的会话ID生成器?它总是8个字符(例如:session = imjxvgob),我想生成一个更长的基于UUID的会话ID。

已知CVE与此相关: http://pivotal.io/security/cve-2015-0201

JdkIdGenerator类已添加到spring-framework 4.2 Issue: SPR-12658,但我不知道如何将其连接到我的配置中。

我正在使用SimpleBroker。

修改 看起来在客户端生成会话ID:socksjs-1.0.3.js:655

 var sessionId = options.sessionId || 8;
 if (typeof sessionId === 'function') {
      this._generateSessionId = sessionId;
 } else if (typeof sessionId === 'number') {
 this._generateSessionId = function() {
      return random.string(sessionId);
 };

这似乎不对。

1 个答案:

答案 0 :(得分:1)

我最终得到了一个服务器生成的UUID,并将其作为“选项”提供给sockjs库。

var serverGeneratedSessionId = '${serverGeneratedUUID}'; // new org.springframework.util.JdkIdGenerator().generateId()
var socket = new SockJS('/path', null, {sessionId: function(){
        return serverGeneratedSessionId;
    }});