iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 23
2

今天,是鐵人賽第二十三天。
大家過得好嗎?還開心嗎?
我們,今天先不實作,而是了解一些觀念。
小編曾在猶豫這篇要不要作為賽程的一章,但,還是決定把它放上來了。
也許,會超過三十篇耶...。

這邊,小編其實在做登入機制,花了蠻多時間去了解到底兩者有何不同?
參考了超多網站及教學,大概整理出下面的筆記。
並且,將在之後兩篇,實作這兩者的登入機制,以更清楚了解當中的意義!

關於Cookie 與 Session 有什麼不同

Cookie

  1. Cookie (小餅乾),只是個小文件,通常會記錄一些對網站的個人喜好設定。
  2. 有些sessionid也寫在裡面!
    如果網站是用session驗證做帳號密碼傳遞交換,並且相依於cookie安全設定而產生的 session的id,被包在裡面。
  3. 因為Cookie傳送時是以明碼方式傳送,機密資料不建議以此方式儲存。
  4. 資料存放在客戶端,不會造成伺服器端的過載。
  5. 存在用戶端的cookie,不會因為瀏覽器的關閉,而消失。(直到時效失效為止。)

Session

  1. Session 主要儲存在Server端的位置,安全性高。
  2. 主要是記錄著,在 web server 上的使用者訊息(一個SessionID對應一筆SessionID)。
  3. Session 在伺服器端並不會自動失效,除非session已經超過設置的失效時間。
  4. Session 機制會在一個用戶完成身分認證後,存下所需的用戶資料,接著產生一組對應的對應的id,存入 cookie 後傳回用戶端。

因為,Cookie 都會被拿來解密,而後竄改。
比方,今天我是用"david"登入,改成另一個身份,叫作"jack",則Server一讀取,誤以為你是"jack",則讓你使用"jack" 身份才能使用的權限,大大的提高風險。
所以,Cookie 在應用時,通常會加入 signedCooke 簽章,來擾亂視聽,讓我們的cookie不容易被竄改。

通常,二者應用在哪些地方?

  1. Cookie 主要用於購物車,下次再買的訂單記錄;記住我的帳號密碼,下次不用再重新輸入…。
  2. Session 主要可應用於網站計數器,登入驗證,使用者上次到訪日期…。

觀念理解參考網站

  1. http://wiki.jikexueyuan.com/project/node-lessons/cookie-session.html
    觀念跟實作上,都還蠻清楚的。

  2. http://blog.hellojcc.tw/2016/01/11/introduce-session-and-cookie/
    作者說是基於上一個連結的網站,寫出來的文章,很清楚。

  3. http://readily-notes.blogspot.tw/2011/06/cookiesession.html
    不同語言的程式,主要是取其觀念理解。

  4. https://goo.gl/ryCfU6
    這個網站寫的很清楚,你就知道,為什麼關閉瀏覽器,跟session的清除,一點關係也沒有。

  5. http://fred-zone.blogspot.tw/2014/01/web-session.html
    這個網站,主要針對session機制,做詳盡說明。


上一篇
Day22 - Jade樣版的Layout
下一篇
Day24 - Cookie在express上的應用—登入實作為例。
系列文
Node.JS - 30 天入門學習筆記32

尚未有邦友留言

立即登入留言