會話的創建

會話的創建

    HttpSession對象提供了一個isNew()方法,使用該方法時應當小心。確定用

戶是否以及擁有一個會話的最好的辦法時獲得當前會話。如果沒有會話存在,那

麼可以強迫用戶登錄。只有在成功登陸之後,才能創建一個新的會話對象。這個

順序是一個好的實踐,因爲它能防止用戶避開安全機制。
    可以通過調用方法getSession(false)獲得會話對象。如果用戶沒有會話,那

麼該方法返回null。然後,可以強迫用戶在每次開始一個新會話之前進行登錄。

在這種情況下,當getSesion(false)返回null時,將客戶端瀏覽器重定向到web應

用程序的登錄頁面。如果用戶已經有一個會話,或者getSession(false)方法返回

的值不是null,那麼可以繼續使用該會話。
    HttpSession session = request.getSesion(false);
    if (session == null){
        response.sendRedirect("login.jsp");
    }
   你可能會試圖執行一下操作:
    HttpSession session = request.getSession(true);
    if (sesion.isNew()){
 response.sendRedirect("login.jsp");
    }
   不要這樣做。
   在該代碼中,我們像往常一樣請求會話對象。然而,因爲我們在getSession()

方法中將參數值設爲了true,所以如果沒有會話存在,那麼服務器將創建一個新

會話。儘管該代碼這樣做似乎是正確的,但它實際上引入了一個安全性問題。一

些人可以通過重複請求url來創建大量會話對象。這些會話是作爲內存堆積在每條

請求的服務器上的,因此,攻擊者可以佔用大量的服務器資源。最終,攻擊者會

使服務器變得很不穩定。

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