自定义sessionid生成策略

springboot项目内置的的tomcat-embed-core生成sessionId的随机数算法是SHA1PRNG算法,该算法在目前被认定为是不安全的随机数算法。如何配置能修改生成sessionid的算法为安全随机数算法,或自己编写的算法如何替换tomcat中的算法。

参考GPT和自己的思路:为了修改生成sessionid的算法为安全随机数算法,可以按照以下步骤进行配置:

  1. 创建一个自定义的Session ID生成类,实现SessionIdGenerator接口,并在generateSessionId方法中编写自己的安全随机数算法。

  2. 在springboot的配置文件中通过server.session.*属性指定Session ID生成类。

例如,在application.properties中添加以下配置代码:

server.session.cookie.name=SESSIONID
server.session.timeout=1800
server.session.cookie.http-only=true
server.session.cookie.secure=true
server.session.cookie.path=/
server.session.random-session-id-generator-class=my.custom.session.id.generator

其中,my.custom.session.id.generator为自定义的Session ID生成类的完全限定名。

  1. 如果已经部署了war包到Tomcat中,则还需在web.xml中添加以下配置代码,指定Session ID生成类:
<listener>
  <listener-class>org.springframework.session.web.session.SpringHttpSessionConfigurator</listener-class>
</listener>
<session-config>
  <session-id-generator class="my.custom.session.id.generator"/>
</session-config>

其中,my.custom.session.id.generator为自定义的Session ID生成类的完全限定名。

请注意,在使用自定义的算法时,需要保证其安全性,避免出现安全漏洞。