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