2014年8月12日 星期二

[Cookie&Session] 基本介紹

由於HTTP協定中stateless的性質,當每一次client在對Server發送request時,前後的要求並不會互相影響,server並不會紀錄之前的狀態,也因此可以使用較少的系統資源來服務較多的client,而要讓server記住client的行為與資料時,就需要cookies與session的協助。


Cookie

基本介紹
當server想要儲存使用者的某些狀態時,就可以發送cookie給client,cookie是http header裡面其中一個欄位,cookie裡的資料以key/value的形式儲存,cookies通常儲存在client的瀏覽器中,也因此若當cookie並沒有加密時,在傳送的過程中容易被攔截或盜取,故並不鼓勵以cookie儲存一些敏感的資料,除了加密之外,更要設定時間在不需要cookie的時候將它刪除。
每個cookies的檔案最大只能到4k,在使用者瀏覽網站的時候瀏覽器會將cookie儲存在記憶體中,當瀏覽器關閉時,尚未expire的cookies會被存進文字檔中,並等待下次連線使用。

安全性
在使用Cookie時,最主要的問題在於Cookie是以明文的方式在網際網路上傳輸及在客戶端電腦儲存,因此我們建議儘量避免使用Cookie儲存敏感的資料。但別因此就捨棄Cookie不用,相對於Session來說,使用Cookie能減輕Server的負擔,所以要是當資料的內容不是很重要,像是用戶的個人設定,仍然可以使用Cookie。


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。

安全性
相對於Cookie,Session多用來儲存敏感性的資料,實用性較高也因此常常會成為攻擊者的目標。攻擊者會想辦法取得使用者的Session id(即PHPSESSID),有了user的id,即可冒充使用者對網站進行存取。


To Be Continue ...


沒有留言:

張貼留言