發表文章

目前顯示的是有「JWT」標籤的文章

JWT(JSON Web Token) 和 Session 的差別

圖片
目的 透過這篇文章理解JWT(JSON Web Token)與Session的差異,以及為何現在大家都用JWT而不是用傳統的Session儲存使用者的資訊,本篇文章的案例都透過登入行為做解說。 緣由 這篇文章主要針對兩者的差異,其實我一直以來只用過session做過使用者狀態傳輸,但是因為工作使用到了Jhisper框架開始嘗試JWT,不過因為這套框架已經將JWT都完整包好直接使用就好,所以不是非常了解,直到有天需要自己寫Spring Security後才發現JWT的奧妙,但是在嘗試的過程中一直不知道為啥不使用Session就好,就開始展開兩者VS的冒險,也有了這篇文章。 Cookie & Session 如果要討論Session的話首先我們必須先理解Cookie是甚麼。 Cookie 我們可以從Wiki上得知 因為HTTP協定是無狀態的,即伺服器不知道用戶上一次做了什麼,這嚴重阻礙了互動式Web應用程式的實現。在典型的網路購物場景中,用戶瀏覽了幾個頁面,買了一盒餅乾和兩瓶飲料。最後結帳時,由於HTTP的無狀態性,不通過額外的手段,伺服器並不知道用戶到底買了什麼,所以Cookie就是用來繞開HTTP的無狀態性的「額外手段」之一。伺服器可以設定或讀取Cookies中包含資訊,藉此維護用戶跟伺服器對談中的狀態。 但是使用Cookie會有以下的缺陷 辨識不精確 如果在同一台機器上使用多個瀏覽器,每個瀏覽器在不同的儲存位置儲存 Cookie,因此,Cookie 並不能定位到一個具體的人,而是用戶,電腦和瀏覽器的組合。 不準確的狀態 如果用戶在取得了一個 Cookie 之後,點擊了瀏覽器的"回退"按鍵,則瀏覽器的狀態和取得Cookie 的狀態就出現了不一致.例如, 如果網站基於 Cookie 技術實現了購物車的應用,當用戶添加了物品後點擊了"回退"按鍵, 購物車的物品狀態可能並沒有發生變化. 隱私、安全和廣告 Cookie 是沒有加密的 案例 Cookies在某種程度上說已經嚴重危及用戶的隱私和安全。其中的一種方法是:一些公司的高層人員為了某種目的(譬如市場調研)而存取了從未去過的網站(通過搜尋引擎查到的),而這些網站包含了一種叫做網頁臭蟲的圖片,該圖片透明,且只有一個像素大小(以便隱藏),...