sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

java httpservletrequest创建新会话/更改会话Id

我正在维护一个Java web应用程序

查看登录代码,它通过HttpServletRequest的getSession()方法从HttpServletRequest获取HttpSession。(它在会话中使用一些值进行身份验证)

但是我担心会话固定攻击,所以在使用初始会话后,我想启动新会话或更改会话id。这可能吗


共 (2) 个答案

  1. # 1 楼答案

    Servlet3.0API不允许您更改现有会话上的会话id。通常,为了防止会话固定,您只需要创建一个新会话,并使旧会话无效

    您可以使这样的会话无效

    request.getSession(false).invalidate();
    

    然后使用创建一个新会话

    getSession(true)getSession()也应该可以)

    显然,如果会话中有要持久化的数据,则需要将其从第一个会话复制到第二个会话

    注意,对于会话固定保护,通常认为只要在身份验证请求上执行此操作就可以了。但是,更高级别的安全性包括丢弃旧会话,并为每个请求创建新会话

  2. # 2 楼答案

    由于JavaEE7和ServletAPI3.1(Tomcat8),您可以使用HttpServletRequest.changeSessionId()来实现这种行为。还有一个监听器HttpSessionIdListener,它将在每次更改后调用

原文链接:https://www.cnpython.com/java/372606

posted on   sunny123456  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示