springboot + shiro 去除登錄界面url後的JESSIONID

公司最近的一個安全產品要拿銷售許可證,管理界面是基於B/S做的,本來在公司悠閒地敲着代碼,突然測試人員發了一份英文的web漏洞掃描報告過來,大致長這個樣子的:

然後就百度這個logo  acunetix

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

然後有一箇中危漏洞:

這個當時就看不懂了,查了下CSRF,俗稱跨站點請求僞造。我在想,我都沒登錄進去,怎麼僞造啊,後來在csdn裏查了半天,查到了有跟我一樣經歷的人,還是個妹子,她寫了很多,就是把我搜索到的所有方法都試過了,全寫進去了,內容有點多,我就拿了有用的部分寫了這篇文章,妹子寫的文章路徑(記一次蛋疼的tomcat、shiro自動生成的JESSIONID去除歷程..........)。

 

漏洞存在原因: 登錄url後面暴露了JESSIONID,得想辦法去掉

 

首先我的項目是基於springboot 2 + shiro 1.4.0 這兩個版本的

在項目配置文件application.properties修改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;
    }

然後就解決了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章