springboot + shiro 去除登录界面url后的JESSIONID

公司最近的一个安全产品要拿销售许可证,管理界面是基于B/S做的,本来在公司悠闲地敲着代码,突然测试人员发了一份英文的web漏洞扫描报告过来,大致长这个样子的:

然后就百度这个logo  acunetix

一家做安全产品的公司,我就栽在这上面了。

然后有一个中危漏洞:

这个当时就看不懂了,查了下CSRF,俗称跨站点请求伪造。我在想,我都没登录进去,怎么伪造啊,后来在csdn里查了半天,查到了有跟我一样经历的人,还是个妹子,她写了很多,就是把我搜索到的所有方法都试过了,全写进去了,内容有点多,我就拿了有用的部分写了这篇文章,妹子写的文章路径(记一次蛋疼的tomcat、shiro自动生成的JESSIONID去除历程..........)。

漏洞存在原因: 登录url后面暴露了JESSIONID,得想办法去掉

首先我的项目是基于springboot 2 + shiro 1.4.0 这两个版本的

在项目配置文件application.yml修改tomcat属性

server:
  servlet:
    session:
      tracking-modes: cookie
      cookie:
        http-only: true

然后在shiro配置文件中添加sessionManager 这个bean

/**
     * shiro session的管理
     */
    @Bean
    public DefaultWebSessionManager sessionManager() {
        DefaultWebSessionManager defaultWebSessionManager = new DefaultWebSessionManager();
        defaultWebSessionManager.setGlobalSessionTimeout(60 * 30 * 1000);
        defaultWebSessionManager.setDeleteInvalidSessions(true);
        defaultWebSessionManager.setSessionValidationSchedulerEnabled(true);
        defaultWebSessionManager.setSessionIdCookieEnabled(true);
        // tomcat的JESSIONID自动生成模块
        defaultWebSessionManager.setSessionIdUrlRewritingEnabled(false);
        return defaultWebSessionManager;
    }

然后就解决了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值