站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
程式網頁

【Note】何謂 Session, Cookie?

tags: Web Design

ROLbvxy

Session

  1. Web容器會為你建立 HttpSession 物件,每個 HttpSession 物件都會有個特殊的 ID,稱之為SessionID

  2. SessionID 預設會使用 Cookie 存放至瀏覽器

  3. Web 容器儲存 Session ID 的 Cookie 預設為關閉瀏覽器就失效

    • 失效的是瀏覽器上的 Cookie
    • getSession() 時,容器會產生新的 HttpSession
    • 大部分Session機制都使用會話Cookie來保存Session ID,而關閉瀏覽器後因為Cookie消失造成 Session id也消失了,但只要把原來的Session ID再發送給Server,那還是能夠找到原來的Session
  4. 設定 HttpSession 預設的失效時間

    • setMaxInactiveInterval():單位為秒
    • <session-timeout>30</session-timeout> <!-- 30 分鐘 -->

    59QrFrg

  1. 瀏覽網頁時,網頁要求存在 local 的資料。
  2. 在存 cookie 時,會指定這個 cookie 的有效期限
    • 當然可以設為永遠有效,但不常見
  3. Cookie就是用來繞開HTTP的 stateless 無狀態性的「額外手段」之一

常用屬性

  • domain (String) 適用此cookie的domain name
  • encode (函式) 用於cookie編碼的同步函式,預設encodeURIComponent.
  • expires (date) cookie的到期日,超過此日期,即失效。
  • httpOnly (boolean) 標記此cookie只能從web server 訪問,以避免不正確的進入來取得竄改。
  • maxAge (number) 設定此cookie的生存時間(毫秒為單位),比方60000(10分鐘後到期,必須重新訪問)
  • path (String) 適用此cookie的路徑,預設: “/”.
  • secure (boolean) 設定此cookie是否只在https使用。
  • signed (boolean) 此cookie是否要設簽章。(如果是true,必須使用cookie-parser設定簽章 )
  • More Detail:Set-Cookie
  • 和此屬性 signed(boolean) 有關,此cookie是否要設簽章。
  • 如果是true,必須使用cookie-parser設定簽章

eHrjqEB

  1. cookie 跟登入的狀態,是兩件事
  2. 因為 cookie 常常用來存放登入的帳號及密碼,如果有 cookie,你可以直接進入網頁,所以會有你還在線的錯覺
  3. 但是有一些情況下,你已經關閉了該網頁,但是你的 brower 還開著,這時候如果有網站是用檢查 cookie 存放的資料,來判斷你是否仍在線,或是檢查該網頁所使用的 network connection 是否還連著,這時候就會誤判了。

PvUy0Wj

How to stay logged in?

  1. 原先 Cookie 預設為關閉瀏覽器就失效
  2. 但各個網站可以自行設定 Cookie 的 lifetime(參考常用屬性),以改變第1點的情況發生
  3. cookie 靠第一次連線獲得的sessionId來進行後續的stay logged in

若Cookie停用,還是能登入成功,WHY?

  1. Session 有兩種傳遞方式

    • Cookie
    • URLs
  2. URL rewrite

  3. 將sessionID放在URL中:
    ch7-2-1a.php?PHPSESSID=8234c3f661bd1eac450c23d5650e0881

    • 使用者沒有在正常登出後清除 session 時,其他人可能會盜取這一組 URLs 來取得使用者的權限或資訊
    • 不管 session 是使用 cookie 或 URLs 方式傳遞 session id,進一步的驗證都是必要的,目前最常用的驗證方法是加上使用者 IP 的資訊
  4. 因網路安全考量,大多數網站不支援此種登入方式

  5. 實作方式:浏览器禁用cookie如何保持会话

Extensive 延伸閱讀

  1. 使用 HttpSession

Reference 參考資料

  1. HttpSession 原理
  2. [不是工程師] 會員系統用Session還是Cookie? 你知道其實他們常常混在一起嗎?
  3. 介紹 Session 及 Cookie 兩者的差別說明
  4. SESSION與COOKIE
  5. IE設置了 封鎖cookiec和允許cookie用戶來說會造成甚麼樣的結果?

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽