站長留言

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

【Note】何謂 Session, Cookie?

tags: Web Design

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 分鐘 -->

  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設定簽章

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

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用戶來說會造成甚麼樣的結果?

沒有留言:

張貼留言

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