安全技術研究-Broken Session Management(JAVA代碼)

2022年12月05日22:35:08 科技 1467

漏洞代碼示例(JAVA servlets)

安全技術研究-Broken Session Management(JAVA代碼) - 天天要聞

認證成功後,當前會話不會失效:

public void doAction(HttpServletRequest request, HttpServletResponse response) {
    String pwd = request.getParameter("j_password");
    String usr = request.getParameter("j_username");
    SessionUser user = persistenceController.loginUser(usr, pwd);
    String msg = "";
    try {
        if (user != null) {

            // XXX session not invalidated!

            request.getSession().setAttribute(Constants.USER, user);
            msg = messageGenerator.RedirectMessage("/ok.html");
        } else {
            msg = messageGenerator.redirectMessage("/error.html");
        }

        PrintWriter out;
        out = response.getWriter();
        out.print(msg);
        out.flush();
    } catch (IOException e) {
        // ...
    }
}

解決方案是使當前會話無效,然後為新登錄的用戶創建一個新的會話:

request.getSession().invalidate();
request.getSession(true);

另一個漏洞代碼示例

安全技術研究-Broken Session Management(JAVA代碼) - 天天要聞


在本例中,註銷時會話不會失效。cookie的值只在用戶的瀏覽器中被清除:

@Override
public void doAction(HttpServletRequest request, HttpServletResponse response) {
    Cookie cookie = new Cookie("JSESSIONID","LOGOFF");
    response.addCookie(cookie);

    // XXX session not invalidated!

    response.sendRedirect("/");
}

解決方案是使會話失效:

request.getSession().invalidate();

如何防護

對於會話固定的問題,在用戶身份驗證成功後調用HttpSession類的invalidate方法。然後通過將true傳遞給HttpServletRequest類的getSession方法來創建一個新的會話。

第三方框架可能已經集成了處理會話管理的解決方案;一定要通過閱讀第三方框架的幫助文檔了解如何使會話失效。

確保在註銷時通過調用HttpSession類的invalidate方法使會話失效。

科技分類資訊推薦

引領科技豪華MPV新風尚 第二代騰勢D9西安車展亮相 - 天天要聞

引領科技豪華MPV新風尚 第二代騰勢D9西安車展亮相

兼具宜商氣度與家用溫情的科技豪華旗艦MPV,第二代騰勢D9迎來西安地區正式亮相。新車依託全球新能源MPV冠軍底蘊,以第二代刀片電池、雙閥雲輦-C、天神之眼5.0智駕等核心技術全面升級,兼顧商務體面與家庭舒適,為西北高端用戶帶來一站式全能出行解決方案。
採購禁入!科華數據材料造假被拒門外 - 天天要聞

採購禁入!科華數據材料造假被拒門外

本報(chinatimes.net.cn)記者胡雅文 北京報道這家趕上AI算力風口的公司,因投標材料造假,被相關採購方列入禁入名單兩年,其此前提出的複議申請也被正式駁回。相關採購平台近日發布公告,明確駁回科華數據股份有限公司(下稱「科華數據」,002335.SZ)此前提交的複議申請。早在一年前,科華數據已被認定在「信息通信樞紐...
快評樂道L80:15萬元級買大五座,這波值得沖? - 天天要聞

快評樂道L80:15萬元級買大五座,這波值得沖?

日前,樂道L80正式發布並開啟預售,其整車購買預售價為24.58萬元起,租電購買預售價則低至15.98萬元起。面對大型SUV市場「細分再細分」之競爭趨勢,這款樂道年度重磅新車都有哪些優勢?又能否成為「大五座SUV革新之作」?下面,圈哥就帶大家全方位感受。
成都直擊凱威德:純電全尺寸SUV的張揚與大氣 - 天天要聞

成都直擊凱威德:純電全尺寸SUV的張揚與大氣

4月22日,凱迪拉克以奧斯卡級盛典規格,將上海保利大劇院點亮為璀璨舞台,在品牌代言人倪妮與全場嘉賓的共同見證下,凱迪拉克全尺寸純電公路旗艦——凱威德耀然上市。新車共推出長續航四驅Pro、高性能四驅Ultra兩款配置,官方售價區間為46.88萬-50.88萬元。