next up previous contents
Next: PHP code injection Up: Code Injection Previous: XSS 簡介   Contents

Cookies 與 Session

  1. 參考資料
  2. HTTP 協定是 Stateless (無狀態) ,也就是 Client 與 Server 兩端不會記得先前的狀態。
  3. 當每一次 client 在對 Server 發送 request 時,前後的要求並不會互相影響,server 並不會紀錄之前的狀態。因此可以使用較少的系統資源來服務較多的 client。
  4. 要讓 server 記住 client 的行為與資料時,就需要 cookies 與 session 的協助。
  5. Cookies
    1. cookie 是 http header 裡面其中一個欄位,cookie 裡的資料以 key/value 的形式儲存。
    2. cookies 通常儲存在 client 的瀏覽器中。
    3. 當 server 想要儲存使用者的某些狀態時,就可以發送 cookie 給 client。
    4. 當 cookie 沒有加密時,在傳送的過程中容易被攔截或盜取,故 cookie 不要儲存一些敏感的資料。
    5. 不需要 cookie 的時候最好將它刪除。
    6. 每個 cookies 的檔案最大只能到 4k,在使用者瀏覽網站的時候瀏覽器會將 cookie 儲存在記憶體中,當瀏覽器關閉時,尚未過期的 cookies 會被存進文字檔中,並等待下次連線使用。
  6. Session
    1. 相對於 cookies 儲存在 client 端,session 則是儲存在 server 端。
    2. session 需要 cookie 的輔助才能運作。
    3. 因為 server 會傳送存有 session id 的 cookie 給 client,並在 server 端建立起這個 session id 的檔案。
    4. client 在瀏覽網頁時都會夾帶此 session id。
    5. server 即可從此 session id 來辨認每個使用者所儲存的狀態與 data。
    6. 相對於 cookies,session 多用來儲存敏感的資料,也常常成為攻擊的目標,如 session hijacking。



2016-06-02