作用
- session 机制:
- 采用的是在服务器端保持Http状态信息的方案。
- 必须采用一种机制来唯一标识一个用户,同时记录该用户的状态。
于是就引入了第一种机制:Cookie机制;那么第二种就是Session机制。
而Session是存储在服务器端。
图解
image.pngimage.png
image.png
会话固定攻击
- 什么是会话固定攻击?
会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。
攻击修复
- 攻击分析
攻击的整个过程,会话ID是没变过的,所以导致此漏洞。
- 修复
- 每次登录后都重置会话ID,并生成一个新的会话ID,这样攻击者就无法用自己的会话ID来劫持会话,核心代码如下
User user = userService.findById(id);
//若存在会话则返回该会话,否则返回NULL
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
//request.getSession(true):若存在会话则返回该会话,否则新建一个会话。
request.getSession(true).setAttribute("user", user);
return user;
网友评论