- 浏览: 632798 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (819)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (9)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
修改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
<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
发表评论
-
BigDecimal/Long 前后端交互失去精度解决方法
2024-01-22 10:31 413BigDecimal/Long 前后端交互失去精度解决方法 ... -
在Java 8中可以通过下面的方式获取Map对象的第一个元素
2023-12-18 13:48 355Java 8中如何获取Map对象的第一个元素 -
用EXCEL批量生成INSERT语句
2023-03-18 11:19 739用EXCEL批量生成INSERT语句 -
使用Java访问FTP文件时再次调用方法client.retrieveFileStream(ftpFile)会返回null的问题
2023-01-07 21:50 759使用Java访问FTP文件时再次调用方法client.retr ... -
java获取本月最后一天
2022-12-28 08:29 2395java获取本月第一天或者最后一天方法 @Test ... -
www
2022-11-12 09:03 0public void saveTransScheduleBi ... -
Notepad++删除代码中的注释,可删除//单行注释和/**/多行注释
2022-10-20 14:17 797Notepad++删除代码中的注释,可删除//单行注释和/** ... -
接口限流算法有哪些
2022-05-05 23:27 249接口限流的几种算法 接口限流算法有哪些? nginx限流方案 ... -
CompletableFuture学习记录
2022-04-25 18:00 243CompletableFuture学习记录 -
java单例模式几种实现方式
2022-04-18 11:48 254java单例模式几种实现方式 -
临时的几个网站
2022-03-31 13:33 267https://www.cnblogs.com/chengxu ... -
Java Stream - 如何filter带谓词
2022-03-23 23:53 248Java Stream Java Lambda语法 J ... -
URLConnection的连接、超时、关闭用法总结
2022-03-08 17:23 571URLConnection的连接、超时、关闭用法总结 jav ... -
关于java中的this::
2022-02-26 23:07 220关于java中的this:: -
StringRedisTemplate和RedisTemplate的区别和选择
2022-02-10 23:05 259StringRedisTemplate和RedisTempla ... -
ForkJoinPool初略分析
2022-02-10 11:44 285ForkJoinPool初略分析 多线程 ForkJoin ... -
service中@NotNull的使用
2022-01-23 13:48 1517@Validated和@NotNull加到什么上面,接口还是 ... -
Java8 Collectors.toMap的两个大坑
2022-01-21 15:54 324Java8 Collectors.toMap的两个大坑 -
踩坑之SimpleAsyncTaskExecutor
2022-01-13 20:50 826踩坑之SimpleAsyncTaskExecutor Sp ... -
都在建议你不要直接使用 @Async 注解
2022-01-10 11:54 777引用如果不自定义异步方法的线程池默认使用SimpleAsync ...
相关推荐
1. **会话创建**:当用户首次访问ASP.NET应用程序时,如果没有现有的SessionId,服务器会生成一个新的SessionId。这个过程通常在用户访问的第一个ASP.NET页面时发生。 2. **存储SessionId**:生成的SessionId被发送...
在网络安全和Web应用程序中,会话管理是至关重要的部分,它确保了用户在与服务器交互时的安全性和连续性。会话恢复是其中的关键技术,它允许用户在重新连接时无需重新登录,从而提供了更好的用户体验。本篇文章将...
- **后续请求携带SESSION**:之后小程序的每次请求,都会将这个SESSION ID作为请求头的一部分发送,服务器根据SESSION ID识别用户身份并提供个性化服务。 4. **交互处理**: - **页面跳转**:如果微信小程序打开...
如果没有找到,可能是因为Session超时或者被手动清除,此时服务器可能会重新生成一个新的Session ID,并将新的数据存储在服务器端。 3. **Session数据存储**: 在服务器端,Session数据通常以键值对的形式存储在一...
在Web应用中,当用户请求验证码时,服务器会生成验证码并将其存储在Session中,同时将验证码的ID(通常是一个唯一的Session ID)发送给客户端,通常以Cookie的形式。客户端在填写验证码后,将验证码ID和用户输入的...
随后,每次用户请求新的页面,这个SessionID会被发送回服务器,服务器根据SessionID找到相应的Session数据。 在ASP.NET中,可以使用`Session`对象来存取Session数据。例如,你可以这样设置Session变量: ```csharp...
- 接收到前端发送的code后,服务器需要调用微信的`sns.code2Session`接口,这个接口需要你的小程序AppID和AppSecret,以及前端传来的code。 - 使用C#编写HTTP请求,向微信API发送POST请求,携带AppID、AppSecret和...
session机制中,服务器会为每个用户生成一个唯一的标识符,即sessionid,这个标识符会存储在用户的浏览器中。当用户再次访问服务器时,浏览器会带着这个sessionid,服务器通过它识别用户的唯一身份。如果浏览器禁用...
- **Session ID的生成**:服务器端为每个Session生成一个唯一的ID。 - **Session ID的传递**:通过Cookie或者URL重写等方式将Session ID传递给客户端。 - **Session数据的读取**:服务器端根据Session ID读取相应的...
如果客户端支持Cookie,服务器会将Session ID作为一个名为"SESSIONID"(或其他类似名称)的Cookie发送给浏览器。如果客户端禁用了Cookie,服务器则可能通过在URL后面附加Session ID(如`...
2. 服务器接收到请求后,如果发现客户端未携带Session ID,则创建一个新的Session,并生成一个唯一的Session ID。 3. 服务器将Session ID返回给客户端,客户端通常以Cookie的形式保存。 4. 客户端后续的请求都会携带...
Session是Web服务器用于跟踪用户状态的一种机制,服务器会在客户端生成一个唯一的Session ID,并将其通过Cookie返回给浏览器。之后,每次请求时,浏览器都会携带这个Session ID,服务器通过这个ID找到对应的Session...
因此,应确保Session ID的生成足够随机,不易预测,并且在服务器端定期更换Session ID以增加安全性。 8. **跨域与Session**: 默认情况下,Session是基于域名的,这意味着同一域名下的不同子域名可以共享Session,...
1. 用户首次访问网站时,服务器生成一个Session ID,通常是一个随机字符串。 2. 服务器将Session ID作为Cookie发送回给客户端,Cookie中包含Session ID以及过期时间等信息。 3. 客户端在后续的每次请求中都将这个...
ASP.NET_SessionId是一个由ASP.NET生成的唯一标识符,用于跟踪用户的会话状态。在用户首次访问网站或Web服务时,服务器会为该用户分配一个ASP.NET_SessionId,并通过Set-Cookie HTTP响应头将其发送给客户端。这个...
$sessionId = session_id(); echo '当前会话ID为: ' . $sessionId; // 存储和读取会话数据 $_SESSION['username'] = 'John Doe'; echo '用户名: ' . $_SESSION['username']; ?> ``` 在这个例子中,首先我们通过 `...
1. 用户首次访问服务器时,服务器创建一个新的Session,并生成一个唯一的Session ID。 2. 服务器将这个Session ID封装在Set-Cookie响应头中,返回给客户端。 3. 浏览器接收到这个响应后,会将Session ID以Cookie的...
开发者需要合理设置session的生命周期,使用安全的session ID生成策略,并考虑跨应用程序的session共享。 **六、跨应用程序的session共享** 在多应用环境中,有时需要共享session数据。这可以通过将session存储在...
- 服务器生成一个唯一的Session ID,并将其发送给客户端。 - 客户端通常将Session ID保存在Cookie中,然后在每个HTTP请求中都将这个ID发送回服务器。 - 服务器接收到请求时,通过Session ID找到对应的Session对象...
在Java Web开发中,用户登录验证是不可或缺的一部分,而在这个"javaweb用户验证码登录session例子"中,我们将深入探讨如何结合验证码、用户密码以及Session技术来实现安全的登录过程。Session是Web应用中用于跟踪...